公司給配的筆記本是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
高清圖片分享: