0x00
用到的第三方库为
- itchat
- pillow
- numpy
0x01
代码如下:
‘’’python
import itchat
import os
import PIL.Image as Image
from os import listdir
import math
itchat.auto_login(hotReload=True)
itchat.auto_login(enableCmdQR=2)
friends = itchat.get_friends(update=True)
#抓取的头像存在 heads 文件夹
headsDir = 'heads'
#试图创建 heads文件夹,如果文件夹存在,则不创建。
try:
os.mkdir(headsDir)
except:
pass
num = 0
print("正在抓取头像...")
#抓取好友头像
for i in friends:
img = itchat.get_head_img(userName=i["UserName"])
if str(img) != "b''":#判断是否为默认头像,如果是,则不抓取
fileImage = open(headsDir + "/" + str(num) + ".jpg", 'wb')
fileImage.write(img)
fileImage.close()
num += 1
print("抓取完成,正在读取文件..")
#读取头像文件
pics = listdir(headsDir)
#获取抓到的头像数量
numPic = len(pics)
#输出头像数量
print("读取到的图片数量为:",numPic)
#计算在 640x640 的画板上每张图片的边长(正方形)
eachsize = int(math.sqrt(float(640 * 640) / numPic))
#每边可容纳图片数量
numline = int(640 / eachsize)
print('每行/列图片数量为:',numline)
#最终画板边长
l = eachsize * numline
print("抓图已经完成,请输入您想要生成的图片的大小")
print("请输入正整数,输入1,则为",l ,"x",l,":")
n = int(input(":"))
print("将为您生成的图片大小是",l * n,"x",l * n)
#新建一张 s * nxs * n 的空白图片
toImage = Image.new('RGBA',(l * n,l * n))
x=0
y=0
print("图片正在生成...")
#在空白图片上写入图片
for i in pics:
try:
img = Image.open(headsDir + "/" + i)
except IOError:
print("Error,打开图片失败")
else:
img = img.resize((eachsize * n,eachsize * n),Image.ANTIALIAS)#改变头像大小
toImage.paste(img,(x * eachsize * n,y * eachsize * n))#将头像逐行打印到空白图片
x += 1
if x == numline:
x = 0
y += 1
#保存写入的图片
toImage.save(headsDir + '.jpg')
print("完成。。\n正在发送给文件助手...")
#发送给 文件传输助手。
itchat.send_image(headsDir + '.jpg','filehelper')
```
参考: