python window 桌面 动态 gif python制作动态壁纸_句柄

女神IU,图片来自网络

最近小编在浏览网页的时候,发现一个网页的背景是动态显示的,非常的炫酷。正好小编最近犯花痴,心仪的女神是韩国的小美女IU, 清纯可爱的小姐姐~~关键中文歌还唱的很好。

于是码农直男潜质又开始发挥了,想着想着干脆模仿着做一个小姐姐的动态桌面,让我的桌面也变得生动起来,天天看女神IU哈哈 。其实整个的思路很简单,我给大家分享一下利用Python来制作一个动态的Windows桌面。

1、整体的思路

 

首先,为大家介绍一下我们程序的思路是如何的。对于Windows系统而言,我们所看到的各个界面都是一个个的窗口组成的,这个窗口就类似于我们浏览器的一个个窗口,而每一个窗口都有一个句柄,这个句柄是一个整型数字,相当于为每一个窗口设定一个编号。

而我们的壁纸也可以看作是一个窗口,我们要做的就是制作一个新的“窗口”,将这个窗口放置到我们的壁纸和桌面上的图标之间,让我们新建的窗口阻挡住原先的壁纸,从而达到我们的目的。

如下图所示:

python window 桌面 动态 gif python制作动态壁纸_机器学习_02

2、程序设计

明白了我们的程序原理,接下来我们就来看看程序是如何实现的吧。
1). 我们要覆盖住原先的壁纸,就需要一个和原先的壁纸分辨率一致的gif图片;
2). 而我们下载的大多数gif图片都不能达到这样的要求,因此程序首先需要将gif图像的大小进行调整,如下图所示:

python window 桌面 动态 gif python制作动态壁纸_机器学习_03

上述的resizeGif函数中,我们首先实例化一个ImageSequence中的Iterator类,其作用是迭代产生gif中的每一帧图像。然后针对每一帧图像,利用frameIterator函数来调整其分辨率,最后我们将调整完分辨率的图像按照顺序组合成gif图像。这里默认的分辨率为(1920,1080)。

3、制作壁纸

有了gif动态图之后,接下来就是将图制作成为新的桌面壁纸,部分程序如下图所示:

python window 桌面 动态 gif python制作动态壁纸_句柄_04

 

  • 上述程序中,我们首先利用getScreenHandle函数获得原先桌面壁纸的句柄;
  • 然后通过pyglet库创建一个新的窗口;
  • 并将新创建的窗口作为原先桌面壁纸窗口的父窗口;
  • 也就实现了覆盖原先的桌面壁纸;
  • 最后程序通过执行pyglet.app.run()来启动程序;

在电脑上显示新的窗口,让我们直观上看起来像是新的窗口,最后,小编通过运行程序来展示一下结果 。