Python 一键生成微信好友头像墙:从简单运行到源码打包全攻略
本文详细介绍如何利用Python快速制作微信好友头像拼图。提供两种方案:一是使用现成程序扫码生成,适合普通用户;二是基于wxpy、Pillow和PyInstaller库编写代码并打包为exe文件,适合开发者。文中特别指出Pillow版本兼容性问题及虚拟环境打包技巧,确保生成的exe文件体积小且运行稳定。
Python 制作微信好友头像墙概述
本文涉及 wxpy、pyinstaller 等库的实际应用。
此前分享了一张包含近 2000 位微信好友头像的拼图,旨在测试能否快速定位个人头像。出乎意料的是,该图片引发了热烈反响,众多读者表示惊叹与赞赏,这完全在预期之外。

这种视觉效果是否引发了密集恐惧症?其实这并不令人震撼,若你的微信好友数量达到 5000 人,生成的图片视觉效果会更加强烈和刺激。
欣赏完图片后,大家可能好奇其制作过程:难道是我耗时费力,逐一保存好友头像再用 PS 手动拼接而成的吗?
当然不是。这是通过 Python 脚本自动完成的,或许这让你觉得 Python 无所不能。实际上,此类图片制作早已有人尝试,但为了让大家也能拥有自己的微信好友图片墙,下面将详细讲解具体实现步骤。
简易模式:无需代码的快速生成
实现方式主要有两种:一种是简便模式,无需编写 Python 代码;另一种是进阶模式,需要编写少量代码。
首先介绍简便模式,仅需两步操作:运行程序并扫描微信二维码。后续工作由程序自动完成,只需在电脑前泡杯茶等待约几分钟即可获取图片。具体耗时取决于微信好友的数量,以近 2000 位好友为例,大约需要 10 分钟。
以下是简单的操作流程示意图:

经过几分钟的处理,即可得到上述拼接好的图片。
至此,简便模式的操作即告完成,过程十分简单。
进阶模式:Python 源码实现与依赖库
如果你对背后的实现原理感兴趣,可以继续阅读下文,了解如何使用 Python 代码实现。代码量不大,仅需 60 行左右即可完成。
核心实现依赖于以下三个库:
- wxpy 库:用于获取微信好友信息并下载头像。
- Pillow 库:用于处理图像,将多个头像拼接成大图。
- Pyinstaller 库:用于将 Python 脚本打包为独立的 exe 可执行文件。
程序通过三个主要函数实现功能:第一个函数 creat_filepath 用于生成存放头像的文件夹路径;第二个函数 save_avatar 循环获取微信好友头像并保存至本地;第三个函数 joint_avatar 负责将保存的头像拼接成一张完整的大图。
完整代码解析
完整的源代码如下:
# -*- coding: utf-8 -*-
from wxpy import *
import math
from PIL import Image
import os
# 创建头像存放文件夹
def creat_filepath():
avatar_dir = os.getcwd() + "\\wechat\\"
if not os.path.exists(avatar_dir):
os.mkdir(avatar_dir)
return avatar_dir
# 保存好友头像
def save_avatar(avatar_dir):
# 初始化机器人,扫码登陆
bot = Bot()
friends = bot.friends(update=True)
num = 0
for friend in friends:
friend.get_avatar(avatar_dir + '\\' + str(num) + ".jpg")
print('好友昵称:%s' % friend.nick_name)
num = num + 1
# 拼接头像
def joint_avatar(path):
# 获取文件夹内头像个数
length = len(os.listdir(path))
# 设置画布大小
image_size = 2560
# 设置每个头像大小
each_size = math.ceil(2560 / math.floor(math.sqrt(length)))
# 计算所需各行列的头像数量
x_lines = math.ceil(math.sqrt(length))
y_lines = math.ceil(math.sqrt(length))
image = Image.new('RGB', (each_size * x_lines, each_size * y_lines))
x = 0
y = 0
for (root, dirs, files) in os.walk(path):
for pic_name in files:
# 增加头像读取不出来的异常处理
try:
with Image.open(path + pic_name) as img:
img = img.resize((each_size, each_size))
image.paste(img, (x * each_size, y * each_size))
x += 1
if x == x_lines:
x = 0
y += 1
except IOError:
print("头像读取失败")
img = image.save(os.getcwd() + "/wechat.png")
print('微信好友头像拼接完成!')
if __name__ == '__main__':
avatar_dir = creat_filepath()
save_avatar(avatar_dir)
joint_avatar(avatar_dir)
PyInstaller 打包指南与避坑
你可以直接运行程序文件,也可以利用 Pyinstaller 将代码打包为 exe 文件后运行。此处额外补充 pyinstaller 的打包方法及注意事项。
不建议直接在系统环境中使用 pyinstaller 进行打包,否则生成的 exe 文件体积会非常大。建议在虚拟环境中进行打包,这样生成的 exe 文件体积会显著减小,通常仅为 10MB 左右。
创建虚拟环境的步骤非常简单,具体操作如下:
第一步,安装 pipenv 和 pyinstaller 包,这两个工具分别用于后续创建虚拟环境和打包程序:
pip install pipenv
pip install pyinstaller # 已安装就不用安装了
第二步,选择一个合适的目录作为 Python 虚拟环境的工作目录,并运行以下命令:
pipenv install # 创建虚拟环境
pipenv shell # 创建好后,进入虚拟环境
第三步,安装程序所需的依赖库。上述程序引用了四个库:wxpy、math、os 和 PIL,可通过一行命令完成安装。
pipenv install wxpy math os
第四步,需特别注意 PIL 库的安装问题。目前不再推荐使用 PIL 库,而是使用 Pillow 库替代。因此,只需安装 Pillow 库即可。但请勿安装最新的 6.0.0 版本,否则可能会遇到各种错误,例如:PIL 无法识别下载的 jpg 头像文件。
OSError: cannot identify image file <ImageFieldFile: images
正确的安装方式是安装较低版本。经测试,安装 4.2.1 版本没有问题,安装命令如下:
pipenv install Pillow==4.2.1
第五步,完成上述步骤后,即可进行程序打包:
pyinstaller -F C:\Users\sony\Desktop\wechat_avatar.py
# 程序路径要改成你电脑上的路径
# -F 表示生成单个 exe 文件,方便运行
运行效果如下:

执行命令后,若约 1 分钟后显示“successfully”字样,则表示程序打包成功:

接着,在程序目录下找到 wechat_avatar.exe 文件,然后按照第一种简便方法运行该文件即可。
总结
以上所述是小编给大家介绍的 Python 一键制作微信好友图片墙的方法,希望对大家有所帮助。如果大家有任何疑问,请留言,小编会及时回复。在此也非常感谢大家对本站网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









