Python 实现图片轮播及音乐循环播放

根据自己的实际情况修改Path参数。
遇到的问题:如果文件夹下存在图片损坏会停止播放,为了播放顺畅,可手动删除已损坏图片。

# -*- coding: utf-8 -*-"""
Created on 2019/8/20@author: eln@requirements: PyCharm 2017.2; Python 3.5.6 |Anaconda 4.1.1 (64-bit)@decription: 用 Python 制作一个电子相册
"""
# pip install pillow pygame mutagen
import os
import sys
import threading
import tkinter as tk
import time
from PIL import ImageTk, Image
import pygame
from mutagen.mp3 import MP3def playmusic():"""播放音乐。"""Path = r'music\\'try:list1 = os.listdir(Path)  # 获取指定路径下所有的 mp3 文件for x in list1:if not (x.endswith('.mp3')):list1.remove(x)list2 = []for i in list1:s = os.path.join(Path, i)  # 对路径与文件进行拼接list2.append(s)while True:for n in list2:# 获取每一首歌的时长path = naudio = MP3(n)pygame.mixer.init()  # 初始化所有引入的模块pygame.mixer.music.load(path)  # 载入音乐,音乐可以是 ogg、mp3 等格式pygame.mixer.music.play()  # 播放载入的音乐time.sleep(int(audio.info.length))  # 获取每一首歌曲的时长,使程序存活的时长等于歌曲时长except Exception as e:print("Exception: %s" % e)resolution = (1366, 768)  # 分辨率
Path = r'D:/nlpPredict/SentenceSimilarity/daj/'  # 相册路径
Interval = 5  # 播放间隔.单位:s
Index = 0  # 当前照片计数
title = "电子相册"  # 窗口标题def getfiles():"""获取图片文件名。"""files = os.listdir(Path)for x in files:if not (x.endswith('.jpg') or x.endswith('.JPG') or x.endswith('.png')):files.remove(x)return filesfiles = getfiles()
print(files)
scaler = Image.ANTIALIAS  # 设定 ANTIALIAS ,即抗锯齿
root = tk.Tk()  # 创建窗口
root.title(title)  # 设置窗口标题img_in = Image.open(Path + files[0])  # 加载第一张图片
# img_in = Image.open("load.jpg")  # 加载第一张图片
w, h = img_in.size  # 获取图片大小
size_new = (int(w * resolution[1] / h), resolution[1])
img_out = img_in.resize(size_new, scaler)  # 重新设置大小
img = ImageTk.PhotoImage(img_out)  # 用 PhotoImage 打开图片
panel = tk.Label(root, image=img)  # Label 自适应图片大小
panel.pack(side="bottom", fill="both", expand="yes")def callback(e):"""手动切换图片。"""try:global Indexfor i, x in enumerate(files):# 判断文件是否存在if not os.path.isfile(Path + '%s' % x):breakif i != Index:  # 跳过已播放的图片continueprint('手动处理图片', x, Index)  # python 3.5# print(unicode('手动处理图片 %s %d' % (x, Index), "utf8", errors="ignore"))  # python 2.7.15img_in = Image.open(Path + '%s' % x)print(img_in)w, h = img_in.sizesize_new = (int(w * resolution[1] / h), resolution[1])img_out = img_in.resize(size_new, scaler)img2 = ImageTk.PhotoImage(img_out)panel.configure(image=img2)panel.image = img2Index += 1if Index >= len(files):Index = 0breakexcept Exception as e:print("Exception: %s " % e)sys.exit(1)# root.bind("<Return>", callback)
root.bind("<Button-1>", callback)  # 点击窗口切换下一张图片def image_change():"""自动切换图片。"""try:global Indextime.sleep(3)while True:for i, x in enumerate(files):# 判断文件是否存在if not os.path.isfile(Path + '%s' % x):breakif i != Index:  # 跳过已播放的图片continueprint('自动处理图片', x, Index)  # python 3.5# print(unicode('自动处理图片 %s %d' % (x, Index), "utf8", errors="ignore"))  # python 2.7.15img_in = Image.open(Path + '%s' % x)w, h = img_in.sizesize_new = (int(w * resolution[1] / h), resolution[1])img_out = img_in.resize(size_new, scaler)img2 = ImageTk.PhotoImage(img_out)panel.configure(image=img2)panel.image = img2Index += 1if Index >= len(files):Index = 0time.sleep(Interval)except Exception as e:print("Exception: %s " % e)sys.exit(1)# m = threading.Thread(target=playmusic)  # 创建音乐播放线程
t = threading.Thread(target=image_change)  # 创建图片切换线程
# python 可以通过 threading module 来创建新的线程,然而在创建线程的线程(父线程)关闭之后,相应的子线程可能却没有关闭
# 需要把 setDaemon 函数放在 start 函数前面解决此问题
# m.setDaemon(True)
# m.start()  # 启动线程
t.start()  # 启动线程
root.mainloop()  # 窗口循环

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里P8架构师谈:架构设计经验汇总

架构设计更多的是实践经验总结&#xff0c;以下架构设计经验&#xff0c;我会陆续补充完整。 一&#xff1a;数据库拆分原则 阿里P8架构师谈&#xff1a;架构设计之数据库拆分六大原则 二&#xff1a;缓存选择原则 阿里P8架构师谈&#xff1a;分布式缓存的应用场景、选型比较…

科技论文写作

一、论文模版 acm的latex模版从https://www.acm.org/publications/proceedings-template下载。创建的github库要设置成私有库 二、实验结果表格 使用在线工具 注意事项&#xff1a;结果四舍五入保留4位小数&#xff1b;对比实验的话(新结果-对比结果)/对比结果&#xff0c;结…

陈丹琦“简单到令人沮丧”的屠榜之作:关系抽取新SOTA!

文 | JayLou娄杰大家好&#xff0c;我是卖萌屋的JayJay&#xff0c;好久不见啦&#xff5e;最近在「夕小瑶知识图谱与信息抽取」群里和群友交流时&#xff0c;JayJay发现了来自陈丹琦大佬&#xff08;女神&#xff09;的一篇最新的关系抽取SOTA《A Frustratingly Easy Approach…

肖仰华 | 知识图谱落地的基本原则与最佳实践

本文转载在公众号&#xff1a;知识工场。肖仰华博士&#xff0c;复旦大学计算机科学与技术学院教授&#xff0c;博士生导师&#xff0c;知识工场实验室负责人。此文内容取自肖仰华教授在华为、CCF等场合所做报告&#xff0c;完整内容见书籍《知识图谱&#xff1a;概念与技术》的…

预训练模型应用工具 PaddleHub情感分析、对话情绪识别文本相似度

文章目录1. 预训练模型的应用背景1.1 多任务学习与迁移学习1.2 自监督学习2. 快速使用PaddleHub2.1 通过Python代码调用方式 使用PaddleHub2.1.1 CV任务原图展示人像扣图人体部位分割人脸检测关键点检测2.1.2 NLP 任务2.2 通过命令行调用方式 使用PaddleHub3. PaddleHub提供的预…

NIPS’20 Spotlight | 精准建模用户兴趣,广告CTR预估准确率大幅提升!

源 | 京东零售技术在以人工智能技术为支持的推荐、搜索、广告等业务中&#xff0c;点击率预估&#xff08;CTR&#xff09;一直是技术攻坚的核心&#xff0c;同时也是人工智能技术在业务落地中最难实现的技术方向之一。第一期介绍了视觉信息使用帮助提高点击率预估的准确度&…

史上最强大型分布式架构详解:高并发+数据库+缓存+分布式+微服务+秒杀

分布式架构设计是成长为架构师的必备技能&#xff0c;涵盖的内容很广&#xff0c;今天一次打包分享&#xff0c;文末有&#xff1a;最全分布式架构设计资料获取方式~ 负载均衡 负载均衡的原理和分类 负载均衡架构和应用场景 分布式缓存 常见分布式缓存比较&#xff1a;memcac…

论文浅尝 | 面向多语言语义解析的神经网络框架

论文笔记整理&#xff1a;杜昕昱&#xff0c;东南大学本科生。来源&#xff1a;ACL2017链接&#xff1a;https://aclweb.org/anthology/P17-2007论文训练了一个多语言模型&#xff0c;将现有的Seq2Tree模型扩展到一个多任务学习框架&#xff0c;该框架共享用于生成语义表示的解…

RemoveError: ‘setuptools‘ is a dependency of conda

问题&#xff1a; Preparing transaction: done Verifying transaction: failed RemoveError: setuptools is a dependency of conda and cannot be removed from condas operating environment. 解决办法&#xff1a; conda update --force conda

LeetCode 46. 全排列(回溯)

文章目录1. 题目信息2. 解题2.1 利用hash map解决2.2 改用bool数组判断是否出现过1. 题目信息 给定一个没有重复数字的序列&#xff0c;返回其所有可能的全排列。 示例:输入: [1,2,3] 输出: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] ]来源&#xff1a;力扣&#xf…

谷歌师兄的刷题笔记分享!

高畅现在是谷歌无人车部门&#xff08;Waymo&#xff09;的工程师&#xff0c;从事计算机视觉和机器学习方向。他在美国卡内基梅隆大学攻读硕士学位时&#xff0c;为了准备实习秋招&#xff0c;他从夏天开始整理某 code 上的题目&#xff0c;几个月的时间&#xff0c;刷了几百道…

【深度揭秘】百度、阿里、腾讯内部岗位级别和薪资结构,附带求职建议!

“ 最近很忙&#xff0c;文章没有及时更新。。 最近被问得最多就是想进入BAT等一线互联网公司&#xff0c;应该怎么办&#xff1f; 我先从BAT等这样的公司看看他们的招聘需求谈起&#xff0c;再结合这样的公司需要对技术的要求是什么&#xff0c;最后结合我的建议&#xff0…

机器学习项目(四)疫情期间网民情绪识别

机器学习项目&#xff08;四&#xff09;疫情期间网民情绪识别 &#xff08;一&#xff09;&#xff1a;https://blog.csdn.net/qq_33357094/article/details/105148198?utm_mediumdistribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&am…

DGL_图的创建、保存、加载

import dgl import torch as th from dgl.data.utils import save_graphsg1 dgl.DGLGraph() g1.add_nodes(3) g1.add_edges([0, 0, 0, 1, 1, 2], [0, 1, 2, 1, 2, 2]) g1.ndata["x"] th.ones(3, 5) # 3个节点的embedding g1.edata[y] th.zeros(6, 5) # 6条边的…

LeetCode 47. 全排列 II(回溯+搜索剪枝)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个可包含重复数字的序列&#xff0c;返回所有不重复的全排列。 示例:输入: [1,1,2] 输出: [[1,1,2],[1,2,1],[2,1,1] ]来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode-cn.com/problem…

会议 | 2019 全国知识图谱与语义大会 (CCKS 2019)

会议注册:http://www.ccks2019.cn/?page_id53会议地址与住宿&#xff1a;http://www.ccks2019.cn/?page_id366OpenKG开放知识图谱&#xff08;简称 OpenKG&#xff09;旨在促进中文知识图谱数据的开放与互联&#xff0c;促进知识图谱和语义技术的普及和广泛应用。点击阅读原文…

jieba分词太慢,怎么办?找jieba_fast

原文链接&#xff1a;https://www.rtnzero.com/archives/272.html 有时候感觉处理一个几十M的文本&#xff0c;要一分钟才能好&#xff0c;然后调试时各种心焦&#xff01; 下面举个例子&#xff1a; 归零有一个11.9M的文本文件&#xff0c;是一些抓取到的Python长尾关键词&am…

DGL_图的打印

首先要安装 networkx import matplotlib.pyplot as plt import networkx as nx import dgl import numpy as np def build_karate_club_graph():src np.array([1, 2, 2, 3, 3])dst np.array([0, 0, 1, 0, 1])u np.concatenate([src, dst])v np.concatenate([dst, src])ret…

闲鱼账号被封怎么办?解封看这里!

怎样避免宝贝被屏蔽、限流解封账号&#xff1f;首先我们要学会规避封号的风险 不要频繁的更改账号&#xff0c;不要多账号单手机操作&#xff0c;一机一号才是正确。 不要连续给人商品点赞或是我想要&#xff0c;连续的操作容易被封 不要发布违禁品&#xff0c;违禁品具体可…

推荐系统顶会RecSys’20亮点赏析

文 | banana源 | 知乎RecSys 2020原计划是在南美洲巴西举办&#xff0c;因为疫情的原因不得不改到线上。虽说线上举办会议&#xff0c;参会效果会打折扣&#xff0c;但也为远在北京的我提供了参会便利。得益于各方的努力和软件的应用&#xff0c;整体来看此次参会的效果高于我对…