0%

用好友头像生成文字

前几天是中秋节,我就把所有微信好友头像拼接成点阵字结合起来,Github上搞了个头像成字的代码再改吧改吧,请看微信朋友圈九宫格效果:

其中,每个字都是16*16的点阵,点阵中每个点可以拆解为4个好友头像图片:

代码中汉字文本可以自定义输入,头像图片也可以是备好的其他图片。怎么样,比之前的点阵字是不是更酷了些

思路

基本思路比较简单:读取微信好友头像,按照汉字的点阵信息进行拼接,生成完整的单字图片。

读取好友头像

读取微信好友头像利用开源的微信接口itchat,扫码登录个人微信,读取好友信息中的头像存到本地。

生成点阵信息

获取汉字的点阵信息可以利用汉字库HZK16文件来实现。
拿到点阵信息后,将背景图片当做16*16点阵,用头像图片和空白来替代点阵中的点。
这里为了提高字笔画的丰富性,需要采用一个点对应4个头像图片。

itchat

itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。
itchat获取微信头像的原理是通过登录web版微信,然后通过浏览器的方式拿到所有好友信息;
但是现在的web版微信在登录的时候直接提示“为了你的安全xxxx”,拒绝通过web登录微信。

通过web版微信自动拉去好友头像已经行不通,所以我们需要另辟蹊径搞到微信好友头像;

Windows版微信

最终经过艰苦卓绝的排查,终于在windows微信的用户信息目录下找到了好友头像数据;

路径如下:

C:\Users\Administrator\Documents\WeChat Files\wxid_xxxx\FileStorage\General\HDHeadImage

HDHeadImage目录下存放了你所有的微信好友头像,也就是说我们已经完成了第一步获取微信好友头像。

用Python把头像生成汉字

用图片生成汉字我们需要用到点阵字体;

点阵字体是把每一个字符都分成16×16或24×24个点,然后用每个点的虚实来表示字符的轮廓。点阵字体也叫位图字体,其中每个字形都以一组二维像素信息表示。

HZK16字库是符合GB2312标准的16×16点阵字库,支持的汉字有6763个