(女神IU,图片来自网络)
最近小编在浏览网页的时候,发现一个网页的背景是动态显示的,非常的炫酷。正好小编最近犯花痴,心仪的女神是韩国的小美女IU, 清纯可爱的小姐姐~~关键中文歌还唱的很好。
于是码农直男潜质又开始发挥了,想着想着干脆模仿着做一个小姐姐的动态桌面,让我的桌面也变得生动起来,天天看女神IU哈哈 。其实整个的思路很简单,我给大家分享一下利用Python来制作一个动态的Windows桌面。
1
整体的思路
首先,为大家介绍一下我们程序的思路是如何的。对于Windows系统而言,我们所看到的各个界面都是一个个的窗口组成的,这个窗口就类似于我们浏览器的一个个窗口,而每一个窗口都有一个句柄,这个句柄是一个整型数字,相当于为每一个窗口设定一个编号。
而我们的壁纸也可以看作是一个窗口,我们要做的就是制作一个新的“窗口”,将这个窗口放置到我们的壁纸和桌面上的图标之间,让我们新建的窗口阻挡住原先的壁纸,从而达到我们的目的。
如下图所示:
2
程序的设计
明白了我们的程序原理,接下来我们就来看看程序是如何实现的吧。
1). 我们要覆盖住原先的壁纸,就需要一个和原先的壁纸分辨率一致的gif图片;
2). 而我们下载的大多数gif图片都不能达到这样的要求,因此程序首先需要将gif图像的大小进行调整,如下图所示:
上述的resizeGif函数中,我们首先实例化一个ImageSequence中的Iterator类,其作用是迭代产生gif中的每一帧图像。然后针对每一帧图像,利用frameIterator函数来调整其分辨率,最后我们将调整完分辨率的图像按照顺序组合成gif图像。这里默认的分辨率为(1920,1080)。
3
制作壁纸
有了gif动态图之后,接下来就是将图制作成为新的桌面壁纸,部分程序如下图所示:
- 上述程序中,我们首先利用getScreenHandle函数获得原先桌面壁纸的句柄;
- 然后通过pyglet库创建一个新的窗口;
- 并将新创建的窗口作为原先桌面壁纸窗口的父窗口;
- 也就实现了覆盖原先的桌面壁纸;
- 最后程序通过执行pyglet.app.run()来启动程序;
在电脑上显示新的窗口,让我们直观上看起来像是新的窗口,最后,小编通过运行程序来展示一下结果 。
源码获取加群:850591259