最近和微信好友有关的数据分析基本都已经实现,包括微信好友性别分布分析及饼图可视化展示案例,微信好友地区分布分析及地图可视化展示案例,微信好友签名分析(数据挖掘)及文字云直观展示案例,参考此前的几篇文章即可。
本文分享的是对微信好友头像的大拼图案例,首先爬取到微信好友的头像保存到本地,然后利用PIL.Image类库提供的方法把这些头像图片拼成一张图,从技术上而言,这个案例的重点在于对于图片文件的处理上——缩放每一个头像图片的大小尺寸然后组合成一个定义好尺寸的大拼图。
程序逻辑很简单,直接上代码(37行代码搞定):
#author: hanshiqiang365
import itchat
import os
import PIL.Image as Image
from os import listdir
import math
itchat.auto_login(enableCmdQR=False)
friends = itchat.get_friends(update=True)[0:]
user = friends[0]["UserName"]
os.mkdir(user)
num = 0
for friend in friends:
img = itchat.get_head_img(userName=friend["UserName"])
fileImage = open(user + "/" + str(num) + ".jpg",'wb')
fileImage.write(img)
fileImage.close()
num += 1
pics = listdir(user)
numPic = len(pics)
eachsize = int(math.sqrt(float(640 * 640) / numPic))
numline = int(640 / eachsize)
toImage = Image.new('RGBA', (640, 640))
x = 0
y = 0
for pic in pics:
try:
img = Image.open(user + "/" + pic)
except IOError:
print("Error: No files 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 + ".png")
itchat.send_image(user + ".png", 'filehelper')
程序运行后生成了一个微信好友头像的大拼图,发到到微信文件助手里,为了隐私安全,给这个生成的大拼图做个加工处理后贴到这里(反正我是看不出来谁是谁了):
在这个案例中应用到的技术并不复杂,常规的用户场景基本也用不到,但是非常有意思,很funny,在一些特别的需求的情况下还是很给力的,只要给一堆图片,应用本案例中的图片处理过程,1秒钟内就能搞出一个大拼图来,效果简直了!
例如,在两年前我的团队搞了一个smile face,整个团队每个人拍一个笑脸照片,然后就是用PPT把这些笑脸一个个贴上去,搞了2-3天才拼出来,现在不用这么麻烦了,照片放一个文件夹里,程序运行,刷得一下就搞出一个规整的大拼图来!
利用这个案例的技术,整个家庭或者部门的成员拉到一个群里,群里所有成员都换上自己的头像,然后运行程序把头像图片爬取下来(爬取群里好友的头像而不是个人头像,需要小小地修改一下程序),然后刷得搞一个家庭/部门成员头像大拼图出来——想一想,真是amazing!
领取专属 10元无门槛券
私享最新 技术干货