资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Python如何读取微信好友头像并拼成祝福语九宫格

这期内容当中小编将会给大家带来有关Python如何读取微信好友头像并拼成祝福语九宫格,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

创新互联成立于2013年,是专业互联网技术服务公司,拥有项目成都网站建设、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元武强做网站,已为上家服务,为武强各地企业和个人服务,联系电话:13518219792

今天有位老哥过生日,结合着微信头像和点阵字,搞了个头像拼字的代码,朋友圈九宫格效果如下:

Python如何读取微信好友头像并拼成祝福语九宫格

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

Python如何读取微信好友头像并拼成祝福语九宫格

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

思路

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

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

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

itchat

itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。

首先是安装 itchat库,在代码中import itchat,之后直接调用方法。

#通过二维码登录微信网页版
itchat.auto_login()
#获取微信好友信息列表
friendList = itchat.get_friends(update=True)

获取头像图片

通过好友列表中的信息,读取头像图片内容,存储到本地,这样就完成了头像素材的获取。

好友如果很多,这个阶段耗时会较长。此外这个过程中发现有的好友可能没有设置头像、或者头像格式比较特殊,会导致读取失败,这里要利用try except语法进行控制。

汉字转点阵

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

HZK16字库是符合GB2312标准的16×16点阵字库,支持的汉字有6763个,每个汉字模型需要16×16一共需要256个点来显示。

头像图片拼接

每个头像图片统一裁剪为100*100的小方图,16*16的点阵,每个点是2*2个头像小方图,即最终图片为长16*2*100的方图。

首先通过PIL模块生成背景图,可以设置自己喜欢的颜色:

#如果想要白色背景,将colorlist[index]改为'#FFFFFF'
canvas = Image.new('RGB', (3200, 3200), colorlist[index])  # 新建一块画布

根据汉字的点阵信息,控制是否将头像图片在该位置展现,最终生成头像图片拼接的单字大图。

九宫格效果

微信朋友圈九宫格效果如下,首先是新年祝福:

Python如何读取微信好友头像并拼成祝福语九宫格

还有张大吉大利吃鸡九宫格:

Python如何读取微信好友头像并拼成祝福语九宫格

回顾

用头像来组字的想法产生挺久了,最开始是想自己设计字形根据笔画来排列头像图片,觉得太辛苦就一直没去做。最近接触了点阵字并用代码来展示后,才有了实现图片组字的信心。

正好碰到朋友过生日,就用代码送上一点心意,比较简陋,但重在心意,感觉还是很不错的。

关于点阵字,从最开始的用0和1来展示,到改变成特殊符号提高美感,再到用tkinter图形界面以规范样式,以及现在用图片来拼点阵字,算是一个纵向自学的过程吧。可能重在乐子而非应用,但这个过程中,用心想了、尽力做了,权当对自己的一种锻炼吧。

上述就是小编为大家分享的Python如何读取微信好友头像并拼成祝福语九宫格了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。


本文标题:Python如何读取微信好友头像并拼成祝福语九宫格
本文路径:http://cdkjz.cn/article/giegdi.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220