Python 制作微信好友头像图片墙
代码涉及到的外部库:
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 制作微信好友头像图片墙相关推荐
- 用python做头像_如何利用python制作微信好友头像照片墙?
这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...
- python表白代码照片墙-如何利用python制作微信好友头像照片墙?
这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...
- 只需四步,让你成为朋友圈的焦点----Python制作微信好友头像墙
今天带给大家一波实力干货,让你分分钟成为朋友圈的红人.焦点! 先来张效果图感受一下! 怎么样,是不是很爽! 链接在这↓ 链接:https://pan.baidu.com/s/1qhRkkLPLdZqE ...
- python软件设计背景_教你用Python制作微信好友背景墙
目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...
- itchat 保存好友信息以及生成好友头像图片墙
2019 第 41 篇,总第 65 篇文章 本文大约 4000 字,阅读大约需要 12 分钟 最近简单运用 itchat 这个库来实现一些简单的应用,主要包括以下几个应用: 统计保存好友的数量和信息 ...
- python制作微信个人二维码_如何用Python制作微信好友个性签名词云图
前言 上次查看了微信好友的位置信息,想了想,还是不过瘾,于是就琢磨起了把微信好友的个性签名拿到,然后分词,接着分析词频,最后弄出词云图来. 1.环境说明 Win10 系统下 Python3,编译器是 ...
- Python爬微信好友头像,性别,所在地区
Python爬微信好友头像,性别,所在地区 本文适合新手(有一定基础的小白) 今天没事,用的网页版微信,于是看源码心理作怪,F12打开,研究了一下,结果发现 /斜眼笑/斜眼笑/斜眼笑 再加上,没事干, ...
- python获取微信好友头像拼接“2020”
python获取微信好友头像拼接"2020" 背景 思路 源码说明 背景 2019年的最后一天,心想马上就要跨年,大家都在总结和祝福,但是又不想随大流,打开微信,翻看着通讯录,突然 ...
- 用python做头像_教你用python下载和拼接微信好友头像图片
相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就可以转载到 ...
最新文章
- 2018年黑龙江各口岸进口俄大豆80.3万吨 同比增长60.1%
- 前华为技术大牛告诉你:如何正确入门深度学习
- PROD_ROOT and PRD_ROOT
- 网络交换机的作用有哪些?
- python随机生成验证码_Python生成随机验证码
- JRuby 1.6.5发布 Ruby语言的Java实现
- android kl文件
- [软件更新]迅雷v5.9.8.1084发布
- 高并发服务器逻辑处理瓶颈,如何解决?
- matlab实现聚类算法
- 火狐无法安装扩展_立即安装的前5个Firefox扩展
- arm架构安装rxtx_Ubuntu下安装和配置RXTX实现串口通讯
- kali攻击139端口_入侵445端口-永恒之蓝漏洞利用-Metasploit
- java_home环境变量_配置home环境变量
- 和平精英官方网站静态页面制作与学习html+css保姆级教程
- SendGrid -- Stressful Subject
- 在Element UI中表格根据数据动态变化显示表格的内容
- shell 编程arry数组
- 读SQL进阶教程笔记12_地址与三值逻辑
- 使用adb和cmdline简化Android应用测试