基于itchat和pil获取微信好友头像并进行拼接

本篇补充一个上一章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)

有疑问可以留言,尽最大努力帮忙解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值