看你的微信头像,就知道你没见过世面
看你的微信名称,我就猜到了你是个渣男
看你的朋友圈,就能反映出你很好追
现如今,不管是常用的QQ、微信、微博等一切社交网站,还是知乎、百度、博客等一些个人网页,注册完成的第一步就是更换头像,为了给自己找一个满意的头像,表达出个人喜好,友友们可谓是绞尽脑汁,搜集头像多种多样,例如百度上搜索“男生帅气头像”、“女生可爱头像”,更或者是自拍照,然后使劲P成自己满意的头像;还有选择自己的偶像或者动漫来做头像。
①不管是自拍照、还是他拍照,这类人性格都很外向,交际圈儿很广。喜欢用自拍大头照做头像的,女生居多。
②男生用自己的自拍照作为头像的不多,但还是有很多人把自己的童年照作为微信头像,可能是怀恋那个纯真的童年,或是怀恋当年帅气的骚年吧。
① 用网红、美女帅哥照片作为自己的头像。网友喜欢用这类照片做自己头像,内心期待自己颜值高,身材好;
②追星族用偶像的照片做头像。某些小女生喜欢用偶像的照片做头像,还会积极地和别人“推销”偶像;
③萌娃图片。首先,新晋奶爸奶妈立马就会换上自己宝宝的图片做头像,表示爱情的结晶,就是为了让大家知道我家宝宝出生了,恭喜贺喜。
(图片来源于网络)
①好多人不喜欢用人物做头像,他们大多会选择动物、漫画、静物等。这类人内向的居多,性格比较平和;
②很多养宠物的小伙伴会把自家宠物的萌照做头像。这种人往往都比较有爱心,但也从一定程度反映出,生活有点儿寂寞,需要人陪伴。
③风景照——中老年人特喜欢,他们出去玩时,拍祖国的大山大河来做头像;采风去,拍大山大河、花草树木,看到好看的风景甚是喜欢,拍一张作为自己的头像,并且好长时间不更换。
(图片来源于网络)
①有些人特别喜欢换头像,隔山差五换一个。这类人一般都喜好很多,看到好看的图就想换头像。再者,他们也比较闲。有时间闲逛,到处搜索好看的图片。所以,大家记得给这类人备注好姓名哦~不然,人家来找你聊天,你认错人。这就尴尬了…
接下来,我就用Python爬取微信,来收取我微信好友所有好友的微信头像,并且把这些头像全部放在一张图上,保存下来,看图识人,哈哈哈…
语言环境:Python 3.7
工具:Pycharm
(1)用pip命令安装好程序库,直接导入
import itchat
import PIL.Image as Image
import math
import os
(2)登录微信
if __name__ == '__main__':
itchat.auto_login(True) # 登录微信
friends = itchat.get_friends(update=True)[0:]
avatar_file_path = make_path()
save_avatar(avatar_file_path)
merge_avatar(avatar_file_path)
(3)用itchat库就可以自动获取微信头像,直接调用,然后保存在规定的目录中。
def make_path():
avatar_dir = 'avatar'
avatar_file_path = r'E:\\' + avatar_dir
if not os.path.exists(avatar_file_path):
os.makedirs(avatar_file_path)
return avatar_file_path
def save_avatar(avatar_file_path):
num = 0
for friend in friends:
img = itchat.get_head_img(userName=friend['UserName'])
sava_path = avatar_file_path + '\\' + str(num) + '.png'
try:
with open(sava_path, 'wb') as f:
f.write(img)
print('正在保存第' + str(num) + '张头像')
except Exception as e:
print(e)
num += 1
(4)头像合成,定义一个白色背景图,画布大小为810*810,根据这个大小可以把微信头像填入到画布中,程序处理完成时既可以在目录下保存这张头像大集合照。
def merge_avatar(path):
length = len(os.listdir(path)) # 获取头像文件夹内的文件个数
each_size = int(math.sqrt(float(810 * 810) / length))
lines = int(810 / each_size)
image = Image.new('RGBA', (810, 810), 'white')
x = 0
y = 0
for i in range(0, length):
try:
img = Image.open(path + '\\' + str(i) + ".png")
except IOError:
print("Error")
else:
img = img.resize((each_size, each_size), Image.ANTIALIAS)
image.paste(img, (x * each_size, y * each_size))
x += 1
if x == lines:
x = 0
y += 1
image.save(path + '\\' + "all.png")
image.show()