Python 一键生成微信好友头像墙:从简单运行到源码打包全攻略

Oliver
Oliver
发布时间:2026-10-13 | 4人浏览过
原创

本文详细介绍如何利用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 一键制作微信好友图片墙的方法,希望对大家有所帮助。如果大家有任何疑问,请留言,小编会及时回复。在此也非常感谢大家对本站网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表