公司给配的笔记本是ThinkpadE480 ,自带的是联想电脑管家,联想电脑管家的设置里有更新开机界面,每次的开机界面图片都很高清,很适合用来做壁纸,我喜欢将壁纸设置为定时更新的,感觉很新鲜,每次看都有不一样的心情。
代码逻辑:
联想电脑壁纸所在路径:C:/Windows/Web/Screen/
要保存的目标路径:C:/Users/yumi/Pictures/Saved Pictures/
联想电脑管家的开机界面图片每隔一段时间,会更新覆盖img105.jpg,所以代码要隔一段时间去检测一下图片img105.jpg是否更新,更新的话将其复制到目标文件下,将对比的图片更换为最新的img105.jpg。
1 import os 2 import shutil 3 4 from PIL import Image 5 from PIL import ImageChops 6 import time 7 def compare_images(path_one, path_two): 8 """ 9 比较图片 10 :param path_one: 第一张图片的路径 11 :param path_two: 第二张图片的路径 12 :return: 相同返回 success 13 """ 14 15 image_one = Image.open(path_one) 16 image_two = Image.open(path_two) 17 try: 18 diff = ImageChops.difference(image_one, image_two) 19 log_path = "C:/Users/yumi/Pictures/Saved Pictures/log.txt" 20 timestr = time.strftime('%Y%m%d_%H%M%S ', time.localtime(time.time())) 21 if diff.getbbox() is None: 22 # 图片间没有任何不同则直接退出 23 f = open(log_path, 'a') 24 f.write("壁纸更新失败,更新时间为"+timestr + '\n') 25 f.close() 26 return "success" 27 else: 28 return "error" 29 30 except ValueError as e: 31 return "{0}\n{1}".format(e, "图片大小和box对应的宽度不一致!") 32 33 34 def add_new_image(path_one, path_two,path): 35 """ 36 添加新壁纸 37 :param path_one: 更新的开机图片路径 38 :param path_two: 上一个时间点最新的更新壁纸 39 :param path: 保存的目标文件夹 40 """ 41 # 获取时间戳,获取系统时间,作为图片名称,保证图片不重名 42 timestr = time.strftime('%Y%m%d_%H%M%S ',time.localtime(time.time())) 43 img_new_name = 'img'+ timestr + '.jpg' 44 img_path = path + img_new_name 45 # 将对比照片重新命名 46 os.rename(path_two,img_path) 47 # 将更新的开机图片复制到目标文件下 48 shutil.copy(path_one,path) 49 # 更新日志 50 log_path = path + 'log.txt' 51 # f = open(log_path , 'r+') 52 # f.read() 53 f = open(log_path , 'a') 54 f.write("壁纸更新成功,更新时间为"+timestr+'\n') 55 f.close() 56 pass 57 58 59 if __name__ == '__main__': 60 # 更新的开机界面图片路径 61 path_one = "C:/Windows/Web/Screen/img105.jpg" 62 # 保存的目标壁纸文件 63 path = "C:/Users/yumi/Pictures/Saved Pictures/" 64 # 最新更新的壁纸图片,用于与新开机界面图片对比,检测是否更新 65 path_two = path + "img105.jpg" 66 result = compare_images(path_one,path_two) 67 # 如果两张图片对比结果为不一致,代表有新的开机图片,将其更新到目标文件夹中 68 if result == "error": 69 add_new_image(path_one,path_two,path)
将程序定时运行,借助Windows定时任务,设置为每隔一个小时执行一次,如何设置定时任务
编写脚本,执行python文件,将定时任务运行的任务设置为screen_update.bat
高清图片分享: