本篇补充一个上一章itchat的方法并有PIL库对获取的头像图片进行拼接
因为衔接上一篇,登陆的步骤我不进行讲解
获取到所有好友的信息后,我们循环取每个人的信息,在循环内加入下面的代码
user = friends['UserName']
image = itchat.get_head_img(user)
打印image就可以得出一串2进制字符,我们要将此保存下来,文件名用微信备注,用open的方法来写入。
完整代码如下:
import itcht
itchat.auto_login(hotReload=True)
friends = itchat.get_friends()
for friends in friends:
user = friends['UserName']
image = itchat.get_head_img(user)
friends['RemarkName'] = friends['RemarkName'].split()
if image:
try:
with open('D://python作业//微信图片//%s.jpg'%friends['RemarkName'][0],'wb') as fb:
fb.write(image)
except:
None
print(friends)
获取到我们的好友头像后,我们再通过PIL库对其拼接。
先导入我们要有的库并命名为Image
import PIL.Image as Image
先创建一个空白的图片
newImage = Image.new('RGB', (12000,12000))
可以在括号内设置背景色参数,如‘white’,‘green’.
关键的一步就是给这张图片添加拼接的图片
拼接图片的代码如下,其中paste就是拼接,toimage就是你要添加的图片,用Image.open打开,括号内的括号表示的是该图片拼接的位置,也就是在新图中的坐标。
newImage.paste(toImage,(m * mw, n * mw))
用中文来解释,就是把你要拼接的图片循环一遍,然后将每一张调用到新图的某个位置上。
完整代码:
import os
import PIL.Image as Image
mw = 800 # 拼接的图片大小
newImage = Image.new('RGB', (12000,12000))#构造图片的宽和高,如果图片不能填充完全会出现黑色区域。12000//8000=14,我以14为每行最大张数。
counts = os.listdir('D://python作业//微信图片')
print(len(counts))
for count in counts:#我直接获取每个我要的图片的名称
try:
print(count)
fname = "D://python作业//微信图片//%s" % count
toImage = Image.open(fname)
n = counts.index(count)
m = n%14#行的图片数
n = n//14#列的图片数
newImage.paste(toImage,(m * mw+400, n * mw+400))
except Exception as e:
print(e)
有疑问可以留言,尽最大努力帮忙解决。