获取微信好友头像

   今天偶尔在GitHub上面看到分享的使用python模块itchat+pillow获取朋友圈微信头像,感觉蛮有意思。下班折腾了下,技术上不算难实现,idea却很重要。最先想到这个idea的才是真会玩啊。纸上得来终觉浅,好记性不如丑网页,要充分把自己的博客利用起来。

   废话少说,先看效果图:

"效果图"

   效果还不错吧:)。好友头像个性一目了然,好有喜感。那么如何实现呢?

   首先是要有python环境,下载源码到本地目录。
   安装抓图所需模块文件:

1
pip install -r requirements.txt

   requirements.txt文件中包含了需要的各个模块及其版本号。

   安装itchat模块:

1
pip install itchat

   wxImage.py源码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import itchat                  #爬取头像
import os
import PIL.Image as Image #拼接图片
from os import listdir
import math

#首先登陆python版本微信itchat,生成二维码
itchat.auto_login(enableCmdQR=True)

#获取好友列表
friends = itchat.get_friends(update=True)[0:]

user = friends[0]["UserName"]

print(user)

os.mkdir(user)

num = 0

#爬取好友头像列表并下载到本地
for i in friends:
img = itchat.get_head_img(userName=i["UserName"])
fileImage = open(user + "/" + str(num) + ".jpg",'wb')
fileImage.write(img)
fileImage.close()
num += 1

pics = listdir(user)

numPic = len(pics)

print(numPic)

#计算出每张头像缩小后的尺寸,计算每张头像缩小后的边长(默认为正方形)
eachsize = int(math.sqrt(float(640 * 640) / numPic))

print(eachsize)

#计算合成图片每一边分为多少小边
numline = int(640 / eachsize)

toImage = Image.new('RGBA', (640, 640))


print(numline)

# 缩小并拼接图片
x = 0
y = 0

for i in pics:
try:
#打开图片
img = Image.open(user + "/" + i)
except IOError:
print("Error: not find file or file not exist")
else:
#缩小图片
img = img.resize((eachsize, eachsize), Image.ANTIALIAS)
#拼接图片
toImage.paste(img, (x * eachsize, y * eachsize))
x += 1
if x == numline:
x = 0
y += 1


toImage.save(user + ".jpg")

# 在微信的文件传输助手发合成后的图片给使用者:
itchat.send_image(user + ".jpg", 'filehelper')

   运行脚本文件:

1
python wxImage.py

   出现如下二维码图案,用手机微信右上角的扫一扫,确认登陆即可。

"二维码文件"

   稍候手机文件传输助手会收到效果图片:

"文件传输助手"

   接下来可以继续改进的是头像显示不完全问题,还可以对朋友圈用户信息进行进一步的数据挖掘。
  感谢分享