背景

最近看到某个人公众号的作者与国内某“消费科技领域”媒体刚正面,这事儿大D是选择支持个人公众号的作者的。

“引流”,说白了就是为了个流量,但是某媒体做的实在是不够讲究。

这个事儿跟这篇水文有啥关系呢?凑热闹来写代码生成自己的微信好友头像全家福。

实现

依赖

本文代码基于Pillow、ItChat两个库,在此对开源库的作者表示感谢。

ItChat:  https://github.com/littlecodersh/ItChat

Pillow:  https://github.com/python-pillow/Pillow

原理

简述

使用ItChat库登陆微信网页版,获取好友头像后进行拼合。

需要做的事

  • 登陆
  • 获取好友列表
  • 获取好友头像并保存本地
  • 计算显示数量(一行放几个,一共多少行)
  • 缩小好友头像到指定大小
  • 将缩小后的头像按照计算出的现实方式拼合到新图上(实际上是将图片打开后按照x, y坐标值粘贴)
  • 输出最后的合成图

代码实现

登陆并获取头像

登陆并获取好友头像是利用ItChat库完成的,好友列表从1开始遍历是因为列表内首个数据是自己。

拼合头像

拼合头像使用Pillow库来完成。

由于微信好友头像大小不一,都缩小成300px边长的小图来用。

大致思路:获取存储目录下的头像数量,计算该数量的所有整除数,作为行显示数量。把所有的整除结果(除1及自身之外)的结果存储在num内,这样就得到方向不同的图,根据自己的需要选择一个用就好了。

结果

贴张图上来

注意事项

由于微信官方并没有直接提供API,所以使用第三方的ItChat库(不限于,还有很多开源的微信库),有可能会造成网页端限制登陆(手机、PC、平板端不受影响)等问题,请酌情使用。

Github

所有代码已经上传到Github,地址如下:

https://github.com/derek-s/wx_familyportrai

版权声明
转载保留版权: 大D技研室 | 《利用Python生成微信好友全家福》
本文链接地址:https://www.dadclab.com/archives/7401.jiecao
转载须知:如果您需要转载本文,请将版权信息,版权授权方式,以及本文的链接地址注明,谢谢合作。
本文被贴上了: , , , , 标签