python itchat实现微信好友头像拼接图的示例代码


Posted in Python onAugust 14, 2017

偶然在网上发现itchat这个框架,itchat是一个开源的微信个人号接口,它使python调用微信变得非常简单。看到网上有人发自己微信好友的头像拼接图,自己也做了一个,感觉还蛮好玩的。

效果图

python itchat实现微信好友头像拼接图的示例代码

下面介绍实现过程:

安装itchat

这个当然还是使用豆瓣源了,速度杠杠的pip install -i https://pypi.douban.com/simple/ itchat

项目依赖

头像拼接用到了pillow这个第三方库,和itchat一样的安装方法

代码

首先调用接口登录,然后可以获取到好友信息,其中第一个为自己的信息。返回的信息为一个列表,里面内容可以复制出来通过json工具格式化,查看返回的字段。然后再次调用接口下载图片,用pillow拼接即可。

import itchat
import math
import os
import PIL.Image as Image

#给auto_login方法传入值为真的hotReload.即使程序关闭,一定时间内重新开启也可以不用重新扫码
itchat.auto_login(hotReload=True)
friends = itchat.get_friends(update=True)

#下载所有好友的头像图片
num = 0
for i in friends:
 img = itchat.get_head_img(i["UserName"])
 with open('./headImg/' + str(num) + ".jpg",'wb') as f:
  f.write(img)
  f.close()
  num += 1
#获取文件夹内的文件个数
length = len(os.listdir('./headImg'))
#根据总面积求每一个的大小
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('./headImg/' + str(i) + ".jpg")
 except IOError:
  print(i)
  print("Error")
 else:
  img = img.resize((each_size, each_size), Image.ANTIALIAS) #resize image with high-quality
  image.paste(img, (x * each_size, y * each_size))
  x += 1
  if x == lines:
   x = 0
   y += 1
image.save('./headImg/' + "all.jpg")
#通过文件传输助手发送到自己微信中
itchat.send_image('./headImg/' + "all.jpg",'filehelper')
image.show()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
R vs. Python 数据分析中谁与争锋?
Oct 18 Python
python使用pyqt写带界面工具的示例代码
Oct 23 Python
对pytorch网络层结构的数组化详解
Dec 08 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
Django的Modelforms用法简介
Jul 27 Python
python实现超市商品销售管理系统
Oct 25 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 Python
Python如何使用argparse模块处理命令行参数
Dec 11 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
Lombok插件安装(IDEA)及配置jar包使用详解
Nov 04 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 Python
pandas 数据类型转换的实现
Dec 29 Python
python的mysqldb安装步骤详解
Aug 14 #Python
python制作小说爬虫实录
Aug 14 #Python
python安装Scrapy图文教程
Aug 14 #Python
基于python时间处理方法(详解)
Aug 14 #Python
关于Django外键赋值问题详解
Aug 13 #Python
python爬虫实战之最简单的网页爬虫教程
Aug 13 #Python
详解python中executemany和序列的使用方法
Aug 12 #Python
You might like
简单的过滤字符串中的HTML标记
2006/12/25 PHP
php中用文本文件做数据库的实现方法
2008/03/27 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
加载 Javascript 最佳实践
2011/10/30 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
JS将时间秒转换成天小时分钟秒的字符串
2019/07/10 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
python 生成不重复的随机数的代码
2011/05/15 Python
Python模块学习 re 正则表达式
2011/05/19 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
西安当代医院管理研究院笔试题
2015/12/11 面试题
小区物业门卫岗位职责
2014/04/10 职场文书
2014年政教处工作总结
2014/12/20 职场文书
python中的装饰器该如何使用
2021/06/18 Python
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技