当我逛简书的时候(偶尔也要娱乐一下),突然看到一篇非常有趣的文章——微信好友全头像.于是我就花了一点时间娱乐一下自己。
前期准备
首先你需要安装了Python3,
然后确保自己安装了以下库:
- itchat: API for Wechat. 微信个人号接口(支持文件、图片上下载)、微信机器人及命令行微信。三十行即可自定义个人号机器人
- pillow: Python的图片操作库
安装代码:
pip3 install itchat
pip3 install pillow
原理
使用itchat
访问微信网页客户端,接着爬通讯录好友的头像的图片,之后使用PIL
对图片进行拼接,最后用itchat
把结果发送到文件助手。
注:itchat
可以好好折腾一下,及时回复男/女朋友的信息,说不定就解决了一场危机。
代码:
源代码源自简书作者[罗罗攀].
我在源代码部分增加了为指定目标文件夹部分filepath
,并增加注释行,便于理解。
# 导入itchat用于登录微信,导入math用于计算图片大小
# 导入PIL用于图片修剪和拼接, 导入os用于获取下载的图片信息
import itchat
import math
import PIL.Image as Image
import os
# 修改filepath为指定的目录
filepath = "存放图片的目录"
# 登录,如果你是Windows,用下面这行代码,然后注释Linux
itchat.auto_login()
# 如果你用的是Linux,用下面这行代码,然后注释Windows
itchat.auto_login(enableCmdQR=1)
# 读取好友
friends = itchat.get_friends(update=True)[0:]
user = friends[0]["UserName"]
# 获取好友头像
num = 0
for i in friends:
img = itchat.get_head_img(userName=i["UserName"])
fileImage = open(filepath + "/" + str(num) + ".jpg","wb")
fileImage.write(img)
fileImage.close()
num += 1
# 利用os.listdir从文件路径中读取存放的图片
ls = os.listdir(filepath)
# 根据分辨率,定义图片大小
each_size = int(math.sqrt(float(640*640)/len(ls)))
lines = int(640/each_size)
image = Image.new('RGBA',(640,640))
x = 0
y = 0
# 修改源图片尺寸,并拼接
for i in range(0,len(ls) + 1):
try:
img = Image.open(filepath + "/" + str(i) + ".jpg")
except IOError:
print("Error")
else:
img = img.resize((each_size, each_size), Image.ANTIALIAS)
image.paste(img, (x * each_size, y * each_size))
x += 1
if x == lines:
x = 0
y += 1
# 保存图片
image.save(filepath + "/" + "all.jpg")
# 用文件助手发送到手机微信端
itchat.send_image(filepath +"/"+"all.jpg","filehelper")
运行方法:
将上述代码保存为friends.py,然后在终端下用python friends.py运行就好了。
效果图
最后放上效果图,为了美观,我删除了部分头像。有没有看到自己的头像呢?
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容