代码涉及到的外部库:

1、wxpy,用于获取好友头像和下载头像

2、pillow,用于拼接头像

完整代码如下:

# -*- coding: UTF-8 -*-
from wxpy import *
import math
from PIL import Image
import os#当前文件所在文件夹
DIR_NAME = os.path.dirname( os.path.abspath(__file__) )
print('DIR_NAME : ' + DIR_NAME)#头像存放的文件夹
AVATER_DIR = os.path.join(DIR_NAME, 'avater')
print('AVATER_DIR : ' + AVATER_DIR)# 创建存放头像的文件夹
def creat_filepath():avater_dir = AVATER_DIRif not os.path.exists(avater_dir):os.mkdir(avater_dir)return avater_dir# 保存好友头像
def download_avater(avater_dir):# 初始化机器人,扫码登陆bot = Bot()friends = bot.friends(update=True)num = 0for friend in friends:#new_name = avater_dir + '\\' + str(num) + ".jpg"new_name = os.path.join(avater_dir, str(num)+'.jpg')#print('new_name : ' + new_name)friend.get_avatar(new_name)print('好友昵称: %s' % friend.nick_name)#print('好友昵称: %s, city:% s' % (friend.nick_name, friend.raw['City']))num = num + 1print('头像下载完毕!')#退出网页版微信bot.logout()# 拼接头像
def make_avater_wall(path):# 获取文件夹头像个数length = len(os.listdir(path))print("file count : " + str(length))# 设置画布大小IMG_SIZE = 2560# 设置每个头像大小each_size = math.ceil(IMG_SIZE / math.floor(math.sqrt(length)))print("each_size : " + str(each_size))# 计算所需各行列的头像数量x_lines = math.ceil(math.sqrt(length))y_lines = math.ceil(math.sqrt(length))print('x_lines:{}, y_lines:{}'.format(x_lines,y_lines))image = Image.new('RGB', (each_size * x_lines, each_size * y_lines))x = 0y = 0'''for root, dirs, files in os.walk(path, topdown=False):for name in files:print(os.path.join(root, name))for name in dirs:print(os.path.join(root, name))'''for (root, dirs, files) in os.walk(path):for pic_name in files:# 增加头像读取不出来的异常处理try:img_path = os.path.join(root, pic_name)size = os.path.getsize(img_path)#判断一下文件大小,下载的个别头像字节大小为0if size > 0:with Image.open( img_path ) as img:img = img.resize((each_size, each_size))image.paste(img, (x * each_size, y * each_size))x += 1print('col : %s, row : %s' % (str(x), str(y)))if x == x_lines:x = 0y += 1else:print('the file size is zero: ' + img_path)except IOError:img_path = os.path.join(root, pic_name)print("头像读取失败" + img_path)#最终保存的文件路径save_path = os.path.join(AVATER_DIR, 'wechat.png')print('正在保存图片,路径为: %s' % save_path)img = image.save(save_path)print('微信好友头像拼接完成!')'''#发送图片给文件助手try:bot.file_helper.send_file(save_path)except ResponseError as e:#查看错误号和错误消息print('ResponseError, err_code: {}, err_msg: {}.'.format(e.err_code, e.err_msg))'''if __name__ == '__main__':#avater_dir = creat_filepath()#先获取微信头像download_avater(avater_dir)#再拼接头像make_avater_wall(avater_dir)

可以直接在运行py文件,也可以用 Pyinstaller 文件打包后运行。运行的结果(原始图片超10M,下面的已做缩放处理):


使用pyinstaller打包成EXE,不要在系统环境中直接打包,采用虚拟环境打包出来的exe要小很多。

1、使用pip安装pipenv 和 pyinstaller

pip install pipenv
pip install pyinstaller

2、选择一个合适的目录作为 Python 虚拟环境,运行:

pipenv install # 创建虚拟环境
pipenv shell # 创建好后,进入虚拟环境

ps:pipenv 创建的虚拟环境必须与每个项目的文件夹绑定在一起。

3、安装程序引用的库,上面程序引用了四个库:wxpy、math、os 和 PIL,一行代码就可以完成安装:

pipenv install wxpy math os

4、需要注意 PIL 的安装,现在不用 PIL 库,而是用 Pillow 库取代,所以安装 Pillow 库就行。但不要安装最新的 6.0.0 版本,否则可能会遇到各种错误,例如:PIL 无法识别下载的 jpg 头像文件。正确的安装方法是安装低版本,经尝试安装 4.2.1 版本没有问题,安装命令:

pipenv install Pillow==4.2.1

5、然后打包程序就可以了(-F 表示生成单个 exe 文件,方便运行):

pyinstaller -F E:\python_space\wechat_test\wechat_avater.py

6、运行命令,等待运行结束,若显示 successfully 字样表示程序打包成功。在dist目录下,找到 wechat_avater.exe。

Pyinstaller把py文件打包成exe的下载地址:https://download.csdn.net/download/hellokandy/11319171


pipenv 常用的命令

退出:exit

卸载安装包:pipenv uninstall 包的名字

查看依赖关系:pipenv graph

查找虚拟环境的路径:pipenv --venv

pipenv的命令解析

$ pipenv
Usage: pipenv [OPTIONS] COMMAND [ARGS]...Options:--where          Output project home information.--venv           查看虚拟环境的路径。--py             Output Python interpreter information.--envs           Output Environment Variable options.--rm             删除虚拟环境。--bare           Minimal output.--completion     Output completion (to be eval'd).--man            Display manpage.--three / --two  Use Python 3/2 when creating virtualenv.--python TEXT    Specify which version of Python virtualenv should use.--site-packages  Enable site-packages for the virtualenv.--version        查看pipenv的版本信息。-h, --help       Show this message and exit.Commands:check      Checks for security vulnerabilities and against PEP 508 markersprovided in Pipfile.clean      Uninstalls all packages not specified in Pipfile.lock.graph      查看包的依赖关系。install    安装虚拟环境或者包。lock       Generates Pipfile.lock.open       View a given module in your editor.run        Spawns a command installed into the virtualenv.shell      启动虚拟环境。sync       Installs all packages specified in Pipfile.lock.uninstall  卸载包。

pipfile 文件配置

在执行 pipenv install 的时候会自动执行 pipfile 文件,安装其中的扩展包。

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true[dev-packages] # 生产环境用到的包文件[packages] # 包文件
flask = "==1.0"
flask-sqlalchemy = "==2.3.2"
flask-wtf = "==0.14.2"
cymysql = "==0.9.1"
flask-cors = "==2.1.0"
flask-httpauth = "==2.7.0"
requests = "==2.18.4"[requires] # python 版本
python_version = "3.6"

Python 制作微信好友头像图片墙相关推荐

  1. 用python做头像_如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  2. python表白代码照片墙-如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  3. 只需四步,让你成为朋友圈的焦点----Python制作微信好友头像墙

    今天带给大家一波实力干货,让你分分钟成为朋友圈的红人.焦点! 先来张效果图感受一下! 怎么样,是不是很爽! 链接在这↓ 链接:https://pan.baidu.com/s/1qhRkkLPLdZqE ...

  4. python软件设计背景_教你用Python制作微信好友背景墙

    目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...

  5. itchat 保存好友信息以及生成好友头像图片墙

    2019 第 41 篇,总第 65 篇文章 本文大约 4000 字,阅读大约需要 12 分钟 最近简单运用 itchat 这个库来实现一些简单的应用,主要包括以下几个应用: 统计保存好友的数量和信息 ...

  6. python制作微信个人二维码_如何用Python制作微信好友个性签名词云图

    前言 上次查看了微信好友的位置信息,想了想,还是不过瘾,于是就琢磨起了把微信好友的个性签名拿到,然后分词,接着分析词频,最后弄出词云图来. 1.环境说明 Win10 系统下 Python3,编译器是 ...

  7. Python爬微信好友头像,性别,所在地区

    Python爬微信好友头像,性别,所在地区 本文适合新手(有一定基础的小白) 今天没事,用的网页版微信,于是看源码心理作怪,F12打开,研究了一下,结果发现 /斜眼笑/斜眼笑/斜眼笑 再加上,没事干, ...

  8. python获取微信好友头像拼接“2020”

    python获取微信好友头像拼接"2020" 背景 思路 源码说明 背景 2019年的最后一天,心想马上就要跨年,大家都在总结和祝福,但是又不想随大流,打开微信,翻看着通讯录,突然 ...

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

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

最新文章

  1. 2018年黑龙江各口岸进口俄大豆80.3万吨 同比增长60.1%
  2. 前华为技术大牛告诉你:如何正确入门深度学习
  3. PROD_ROOT and PRD_ROOT
  4. 网络交换机的作用有哪些?
  5. python随机生成验证码_Python生成随机验证码
  6. JRuby 1.6.5发布 Ruby语言的Java实现
  7. android kl文件
  8. [软件更新]迅雷v5.9.8.1084发布
  9. 高并发服务器逻辑处理瓶颈,如何解决?
  10. matlab实现聚类算法
  11. 火狐无法安装扩展_立即安装的前5个Firefox扩展
  12. arm架构安装rxtx_Ubuntu下安装和配置RXTX实现串口通讯
  13. kali攻击139端口_入侵445端口-永恒之蓝漏洞利用-Metasploit
  14. java_home环境变量_配置home环境变量
  15. 和平精英官方网站静态页面制作与学习html+css保姆级教程
  16. SendGrid -- Stressful Subject
  17. 在Element UI中表格根据数据动态变化显示表格的内容
  18. shell 编程arry数组
  19. 读SQL进阶教程笔记12_地址与三值逻辑
  20. 使用adb和cmdline简化Android应用测试

热门文章

  1. 机器学习实战应用案例100篇(十四)-飞蛾扑火优化算法从原理到实战应用案例
  2. Cloudcanal数据同步神器
  3. 压电悬臂梁 matlab,悬臂梁式压电发电结构理论模型及其仿真研究
  4. [数学基础]游戏开发数学技术
  5. HTML5实现简易电子书
  6. Python游戏辅助基础之AutoPy
  7. resultMap的用法以及关联结果集映射
  8. 小程序代码转码oppo快应用
  9. impdp导入mysql_Oracle expdp/impdp导出导入命令及数据库备份(转)
  10. 【CSRF】学习关于CSRF攻击和防范