您的位置:首页 > 移动开发 > 微信开发

微信好友头像拼接图

2017-05-02 13:31 176 查看


      今天在网上看到一篇文章,是讲解怎么用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位浮点型像素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: