用Python 制作微信全家福,这么神奇的吗?
前聊天刷朋友圈,晒了一张下面的照片,微信好友墙,一张大图片,展示了自己所有好友的照片!
效果图如下,出于隐私,这里作了模糊处理。
是不是很炫,而且这还是独一无二的,毕竟每个人的微信好友是不一样的。本文就教大家用Python来实现这种效果。
1 环境操作系统:Windows
Python版本:3.7.3
2 代码实现我们需要首先需要获取好友的头像信息,接下来处理图像并完成图像的拼接。
准备工作
在这里,我们登录微信获取好友信息,使用的是 wxpy 模块;处理并生成最终的图像借助 PIL 模块。因为都是第三方模块,如环境中没有可以使用 pip 进行安装。另外涉及路径的处理等,我们需要导入 os 模块和 sys 模块。
fromwxpyimport*importPIL.ImageasImageimportosimportsys
获取并存储好友头像信息
我们要获取微信好友的头像,首先需要登录微信
#初始化机器人,扫码登陆微信,适用于Windows系统bot=Bot()##Linux系统,执行登陆请调用下面的这句#bot=Bot(console_qr=2,cache_path="botoo.pkl"
在获取好友头像信息之前,我们得先在本地创建一个目录,用于后续存储好友头像的文件。
#获取当前路径信息curr_dir=get_dir(sys.argv[0])#如果FriendImgs目录不存在就创建一个ifnotos.path.exists(curr_dir+"FriendImgs/"):os.mkdir(curr_dir+"FriendImgs/")
接下来就是获取友头像信息,并将其存储在本地创建的目录中。
my_friends=bot.friends(update=True)#获取好友头像信息并存储在FriendImgs目录中n=0forfriendinmy_friends:friend.get_avatar(curr_dir+"FriendImgs/"+str(n)+".jpg")n=n+1
这时你就可以在本地FriendImgs文件夹中,看到保存下来的微信好友头像的图片。
生成微信好友墙
制作微信好友墙,就像以前的大字报,把我们下载的好友头像逐一贴上去即可。
首先设定好微信好友墙的尺寸,使用 Image.new() 方法。
image=Image.new("RGB",(650,650))
接下来,我们需要逐个打开微信好友的图片,使用 Image.open() 方法。
img=Image.open(curr_dir+"FriendImgs/"+file_names)
将微信头像图片,重置为50*50像素尺寸的小图,使用 img.resize() 方法。
img=img.resize((50,50),Image.ANTIALIAS)
然后将图片黏贴到我们的照片墙中,使用 image.paste() 方法。
image.paste(img,(x*50,y*50))
最后将制作完成的照片墙保存下来,使用 image.save() 方法。
img=image.save(curr_dir+"WeChat_Friends.jpg")
现在我们将本小节中代码整合到一起,如下所示:
#准备生成微信好友头像墙的尺寸image=Image.new("RGB",(650,650))#定义初始图片的位置x=0y=0#获取下载的头像文件curr_dir=get_dir(sys.argv[0])ls=os.listdir(curr_dir+'FriendImgs')#遍历文件夹的图片forfile_namesinls:try:#依次打开图片img=Image.open(curr_dir+"FriendImgs/"+file_names)exceptIOError:continueelse:#重新设置图片的大小img=img.resize((50,50),Image.ANTIALIAS)#将图片粘贴到最终的照片墙上image.paste(img,(x*50,y*50))#设置每一行排13个图像x+=1ifx==13:x=0y+=1#保存图片为WeChat_Friends.jpgimg=image.save(curr_dir+"WeChat_Friends.jpg代码执行后,最终生成的效果图如下:
(这里展示的图片做了模糊处理)
3 后记本文中设定照片墙尺寸为650*650,而好友头像尺寸为50*50,这样最终制作成的照片墙每行有13位好友,共计容纳13*13位好友。
大家可根据自己实际情况,自行调整尺寸参数,以达到最佳效果。大家可以动手试一下啦!制作自己独一无二的照片墙吧!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。