今天在网上看到一篇文章,是讲解怎么用python制作微信好友拼接图,一起来学习一下。
import itchat
import math
import PIL.Image as Image
import os
itchat.auto_login(True) #使用命令行显示二维码登录,参数设为True,则每次运行时只要扫码一次就行了,不用重复扫码
friends = itchat.get_friends(update=True)[0:]
# itchat.get_friends()将会返回完整的好友列表,每个好友的信息为一个字典,列表第一项为本人的信息。传入update=True将会更新好友列表并返回。
num = 0
for friend in friends:
image = itchat.get_head_img(userName=friend["UserName"]) #用 itchat.get_head_img(userName=None)来爬取好友列表的头像
fileImage = open("E:\小说" + "/" + str(num) + ".jpg",'wb') #将好友头像下载到本地文件夹
fileImage.write(image)
fileImage.close()
num += 1
dirs = os.listdir("E:\小说")#os.listdir(path)获得制定目录中的内容,参数path为路径
each_size = int(math.sqrt(float(640*640)/len(dirs))) #计算每张照片大小,因为微信头像大小是(640*640)
line = int(640.0/each_size) #计算每边应该放几张照片
photographic = Image.new("RGBA",(640,640)) #生成一张底片,可以在这章图片上粘贴图片,文章后边有解释
x = 0
y = 0
for i in range(0,len(dirs)): #可能需要修改一下范围
try:
imageOfFriends = Image.open("E:\小说" + "/" + str(i) + ".jpg") #打开一张照片,PIL库的应用
except IOError:
print "error"
else:
image_resize = imageOfFriends.resize((each_size,each_size)) #resize成each_size * each_size大小的图片,注意参数为元组
photographic.paste(image_resize,(x*each_size,y*each_size)) # 把图片粘贴在底片上
x += 1
if x == line:
x = 0
y += 1
photographic.save("E:\小说" + "/" + "all.jpg") #保存图片到制定位置
itchat.send_image("E:\小说" + "/" + "all.jpg","filehelper") #把图片发送给微信文件助手(filehelper)
###############################
newIm = Image.new("RGBA",(640,640))
#newIm是python图像处理库(PIL)中的一个函数,Image.new(mode,size,color=None),其中第一个参数mode是图片的模式,看下表:
1----------------1位像素,黑和白,存成8位的像素
L----------------8位像素,黑白
P----------------8位像素,使用调色板映射到任何其他模式(?)
RGB-----------3*8位像素,真彩
RGBA---------4*8位像素,真彩 + 透明通道(透明通道了解不多)
CMYK---------4*8位像素,颜色隔离
YCbCr--------3*8位像素,颜色视频格式
I(大写)--------32位整形像素
F---------------64位浮点型像素