我已经将本文完整代码打包成可执行程序了,大家下载后双击即可执行,有需要的可以在公众号【谭小谭】后台回复关键字【微信头像】即可获取软件。

今天给大家介绍一个很有意思的东东,可以一键下载你所有微信好友的头像,重要的是还可以把所有好友的头像拼接成一张大图,类似于照片墙效果,据说把这张大图发朋友圈会有奇效,先来看下效果图吧,考虑到隐私,对图片做了模糊处理。

是不是很有意思,其实实现原理也不难,下面简单介绍下实现思想。

1、下载好友头像

首先这里用到了一个很重要的第三方库 itchat, 这个库很强大,你大概可以理解为微信的一个 api 大集合,即微信正常的添加好友、发聊天消息、加群等等绝大多数微信操作都能通过这个 itchat 这个库来实现,前面我也有介绍过这个库,目前市面上大多数微信机器人都是基于 itchat 库来实现的,那么这个 itchat 又是怎么能有这么牛逼的呢,其实也没有非常的神奇,通俗说就是通过对微信网页版(这里是web网页版,不是pc客户端版)的抓包分析得到了微信的相关 api 接口,通过这些接口能直接和微信服务器对接上,比如调用一个获取微信好友列表的接口,就直接能拿到你微信好友列表的数据了,包括好友昵称、头像、性别等等信息。当然微信已经发现了好多人在滥用相关 api 接口了,所以对新注册的微信账号直接限制了其使用网页版微信登录。

2、拼接好友头像

当我们下载到微信好友头像之后,我们再使用一个 pillow 库来拼接所有的图片即可。pillow 是一个强大的图片处理库,通常被简称为 PIL ,在这里我们先计算出一共有多少张头像图片,然后再计算出每行每列放多少张图片,从而可以得出这张大图的大小,于是可以通过 PIL 创建一个给定大小的空图片,然后再通过循环把所有的头像图片依次粘贴到大图上即可完成拼接,最后在完成拼接后再使用 itchat 将拼接好的大图通过文件助手自动发送到自己微信上。

#-*- coding:utf-8 -*-import itchat
import math
import os
import PIL.Image as Image# 开启热登录,短时间内退出,再次进入可以不用扫码登录
itchat.auto_login(hotReload=True)
friends = itchat.get_friends(update=True)# 下载所有好友的头像图片
num = 0
imgPath = './headImg/'
if not os.path.exists(imgPath):os.mkdir(imgPath)for i in friends:img = itchat.get_head_img(i["UserName"])with open(imgPath + str(num) + ".jpg", 'wb') as f:f.write(img)f.close()num += 1length = len(os.listdir(imgPath))
# 根据总面积求每一个的大小
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(imgPath + str(i) + ".jpg")except IOError:print(i)print("image open error")else:img = img.resize((each_size, each_size), Image.ANTIALIAS)image.paste(img, (x * each_size, y * each_size))x += 1if x == lines:x = 0y += 1
image.save(imgPath + "myFriends.jpg")
# 通过文件传输助手发送到自己微信中
itchat.send_image(imgPath + "myFriends.jpg", 'filehelper')
image.show()

上面就是完整的源代码,大家可以直接复制到自己电脑上直接运行,如果还不知道怎么安装和运行python的话,可以参考我前面的相关文章。

一键拼接所有微信好友头像相关推荐

  1. 微信神器:一键批量下载微信好友头像并拼成一张图

    苏生不惑第279 篇原创文章,将本公众号设为星标,第一时间看最新文章. 之前分享过一键生成你的微信社交数据报告,不过很多人的微信不能登录网页版微信.会提示这个:为了你的帐号安全,此微信号不能登录网页微 ...

  2. Python:通过wxpy拼接所有微信好友头像

    文章目录 简介 代码示例 小结 简介 相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面小编就给大家带来一个好玩的东西.用python下载所有的微信好友的头像, ...

  3. 一键制作所有微信好友头像墙照

    你有密集恐惧症吗? 想知道你在我微信列表里面吗? 看图吧!! 刚把上面的图发了一下朋友圈就有一堆小伙伴问我怎么制作的,现在把方法告诉大家,这是一个Python编写的小程序! 在文章的末尾我会给大家提供 ...

  4. 高手用Python一键生成微信好友头像墙

    用 python 代码写了一个一键生成合成微信好友头像的程序,效果如下: 不会写代码?没关系!只要你会使用电脑就 ok! 因为除了用代码方式生成外,还建了一个 .exe 的程序,在电脑点击运行就完事了 ...

  5. 用Python一键生成微信好友头像墙

    前言 用 python 代码写了一个一键生成合成微信好友头像的程序,效果如下: 不会写代码?没关系!只要你会使用电脑就 ok! 因为除了用代码方式生成外,还建了一个 .exe 的程序,在电脑点击运行就 ...

  6. 一键拼接微信好友头像/玩炫朋友圈

    在这里提供一键拼接微信好友头像的源码,分享到朋友赚足眼球. 另附打包好的工具,下载即用! import sys from wxpy import * import math from PIL impo ...

  7. 用python做头像_教你用python下载和拼接微信好友头像图片

    相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就可以转载到 ...

  8. Python实现一键生成微信好友头像墙

    效果图: 具体代码实现如下: # -*- coding: utf-8 -*- from wxpy import * import math from PIL import Image import o ...

  9. 用python一键生成你的微信好友头像墙

    导语 你千万别跟任何人谈任何事情.你只要一谈起,就会想念起每一个人来,我只知道我很想念我所谈到的每一个人. --J·D·塞林格<麦田里的守望者> 前言 用 python 代码写了一个一键合 ...

  10. python朋友圈头像_用python一键生成头像墙,将你微信好友头像全部收集起来

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python编程与实战 ( 想要学习Python?Py ...

最新文章

  1. ue4中面部动画制作视频教程 Facial Animation More In Unreal Engine 4
  2. 物联网是地产行业转型的有力推手
  3. Influxdb1.2.2安装
  4. ul 、ol li 继承原有样式的问题
  5. Apache状态监测集重启
  6. 第五章:系统困境之 你的努力忽略了关键限制因素
  7. mysql 导入导出.sql文件
  8. C#删除字符串最后一个字符的几种方法
  9. 迅雷前CEO陈磊涉嫌职务侵占罪已被立案侦查,股价周四下跌超7%
  10. 【Elasticsearch】在 Elastic Cloud 上的 Elasticsearch 服务中,如何针对日志和指标用例确定热温架构的规模
  11. vb杨辉三角代码编写_如何用VB编程输出杨辉三角?
  12. 我的世界基java版刷怪机制_我的世界为什么自己的刷怪塔效率低下原因分析
  13. es java 创建索引_Elasticsearch(ES) 创建索引
  14. 【Nacos源码篇(五)】Subscriber源码分析
  15. java flightrecorder_java 11 Java Flight Recorder
  16. 查询计算机会议信息一站式工具:截稿日期、召开信息、会议等级全都有!
  17. Xcode 工程清理瘦身
  18. 通过ip地址访问操作远程Mysql数据库
  19. 单位弹性需求曲线形状_2021经济学考研:需求曲线形状与弹性的关系
  20. Python 字典类型转换json格式

热门文章

  1. PPT母版和PPT模板
  2. IEEE Trans LaTex模板参考文献格式
  3. 读书笔记_013 《人间失格》
  4. linux mailx 发送多个附件,CentOS安装mailx用命令以SMTP方式发送带附件邮件可用SSL
  5. 用foobar将ape转换为mp3格式
  6. cgi/fastcgi停止工作
  7. 移动机器人 | 传感器及分类
  8. 微处理器系统结构与嵌入式系统设计(一)
  9. android6.0相机权限申请
  10. 7-5 华氏度转摄氏度(四舍五入) (5分)_PTA_Java基础练习