微信好友头像拼接图


      今天在网上看到一篇文章,是讲解怎么用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位浮点型像素



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值