太长不看:直奔文章最后下载。
如果你的系统是Win10的话,你应该能注意到,每次登录的时候壁纸都会变化,这就是Windows聚焦壁纸。Windows每隔一段时间(大概一两天)就更新一次。有时候遇到喜欢的壁纸就特别想保存下来,那么该怎么办呢?
其实这些图片就存在于电脑上的某个文件夹里,找到它复制出来就可以了(C:\Users\%username%\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets\)。
找到后你会发现它大概是这个样子,文件都去掉了扩展名,无法显示缩略图。随便复制一个(文件稍微大点的,比如500KB以上的)到桌面,重命名文件加上".jpg"后缀就显示出来了。
但是一个个复制太麻烦,而且这个文件夹还会自动更新。这种机械性的重复操作最好的做法当然是交给程序实现了。
Talk is cheap. Show me the code!
本文就以Python为例,代码如下:
import os,shutil,cv2
focusDir="\\".join(os.getenv('APPDATA').split('\\')[:-1]) + "\\Local\\Packages\\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\\LocalState\\Assets\\"
focusList=os.listdir(focusDir)
if not os.path.isdir(r'WindowsFocusWallpapersH'):
os.mkdir(r'WindowsFocusWallpapersH')
if not os.path.isdir(r'WindowsFocusWallpapersV'):
os.mkdir(r'WindowsFocusWallpapersV')
saveDirH=os.getcwd()+'\\WindowsFocusWallpapersH\\'
exitListH=os.listdir(saveDirH)
saveDirV=os.getcwd()+'\\WindowsFocusWallpapersV\\'
exitListV=os.listdir(saveDirV)
for f in focusList:
focusPic=focusDir+f
img=cv2.imread(focusPic)
if img.shape[0] < img.shape[1] and not (f+'.jpg') in exitListH:
shutil.copyfile(focusPic,saveDirH+f+'.jpg')
if img.shape[0] > img.shape[1] and not (f+'.jpg') in exitListV:
shutil.copyfile(focusPic,saveDirV+f+'.jpg')
大致逻辑就是,把Assets文件夹里所有大于100KB的文件找出来,然后加上".jpg"后缀,竖版的图片复制到当前文件夹下的WindowsFocusWallpapersV文件夹里,横版的复制到---H文件夹里(Horizontal水平,Vertical竖直)。
每天都打开这个小程序运行一下的话,日积月累就是这个效果:
还可以把桌面背景设置为幻灯片放映,文件夹就选那个H文件夹,这样桌面壁纸会自动更换。
经过测试,Python生成的exe在另外的电脑上运行有问题,于是重新用C#实现了一下,体积大大减小,只有6KB,目前运行正常。
欢迎分享、反馈。
文件名称:SaveFocusImages.zip
链接: https://pan.baidu.com/s/1eT1fc1G 密码: jt1f
领取专属 10元无门槛券
私享最新 技术干货