用 python 代码写了一个一键生成合成微信好友头像的程序,效果如下:
image不会写代码?没关系!只要你会使用电脑就 ok! 因为除了用代码方式生成外,还建了一个 .exe 的程序,在电脑点击运行就完事了 下面分别详细的给大家讲解是如何实现的
2.在windows上点击运行,会弹出一个微信登陆的二维码,用手机微信扫描,确认登录。
3.登陆成功后,会显示保存的头像,最后会在程序运行的目录生成一张 all.png 的图片
image image当看到 "所有的微信头像已合成,请查阅all.png!" 的时候,你要的头像墙就在 wxImages 文件夹里面
image- 你可以把这张图发到朋友圈,随便配个文案,随后就等着大波点赞吧。
代码教程
代码其实很简单,主要是做起来觉得很有意义,如果你会python基础,再加上下面的讲解,你也可以的!
- 首先新建一个虚拟环境。为什么要虚拟环境?怎么建虚拟环境? 我之前的文章有写,去历史消息翻翻就能找到
虚拟环境的名字随意取,我取的是 “wx”
- 在pycharm 中导入刚才建好的虚拟环境
3.主要用到下面三个库: wxpy 用来操作微信的,除了获取头像,还能给好友发消息,具体可查看官方文档 pillow <=4.2.1 处理头像 pyinstaller 将代码打包成 .exe 程序的 4. 接下来就是写代码了
在这推荐下小编创建的Python学习交流群835017344,可以获取Python入门基础教程,送给每一位小伙伴,这里是小白聚集地,每天还会直播和大家交流分享经验哦,欢迎初学和进阶中的小伙伴。
微信登陆部分代码
<pre class="prettyprint hljs python" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">@staticmethod
def get_image():
path = os.path.abspath(".") #当前目录
bot = Bot() # 机器人对象
friends = bot.friends(update=True)
dirs = path + "\wxImages" # 微信头像保存的路径
if not os.path.exists(dirs):
os.mkdir("wxImages")
index = 0
for friend in friends:
print(f"正在保存{friend.nick_name}的微信头像")
friend.get_avatar(dirs + "\\" + f"{str(index)}.jpg")
index += 1
return dirs # 合成头像的时候需要用到
复制代码</pre>
合成图像代码
<pre class="prettyprint hljs vim" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"> @staticmethod
def composite_image(dirs):
images_list = os.listdir(dirs)
images_list.sort(key=lambda x: int(x[:-4])) # 根据头像名称排序
length = len(images_list) # 头像总数
image_size = 2560 #
# 每个头像大小
each_size = math.ceil(image_size / math.floor(math.sqrt(length)))
lines = math.ceil(math.sqrt(length)) # 列数
rows = math.ceil(math.sqrt(length)) # 行数
image = Image.new('RGB', (each_size * lines, each_size * rows))
row = 0
line = 0
os.chdir(dirs) # 切换工作目录
for file in images_list: # 遍历每个头像
try:
with Image.open(file) as img:
img = img.resize((each_size, each_size))
image.paste(img, (line * each_size, row * each_size))
line += 1
if line == lines: # 一行填满后开始填下一行
line = 0
row += 1
except IOError:
print(f"头像{file}异常,请查看")
continue
img = image.save(os.getcwd() + "/all.png") # 将合成的头像保存
if not img:
print('所有的微信头像已合成,请查阅all.png!')
复制代码</pre>
核心代码完成后,将两部分合一起再导入需要的包,就完事了 源码在此
<pre class="prettyprint hljs python" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"># coding: utf-8
from wxpy import Bot, Chat
import math
import os
from PIL import Image
class WxFriendImage(Chat):
@staticmethod
def get_image():
path = os.path.abspath(".")
bot = Bot() # 机器人对象
friends = bot.friends(update=True)
dirs = path + "\\wxImages"
if not os.path.exists(dirs):
os.mkdir("wxImages")
index = 0
for friend in friends:
print(f"正在保存{friend.nick_name}的微信头像")
friend.get_avatar(dirs + "\\" + f"{str(index)}.jpg")
index += 1
return dirs
@staticmethod
def composite_image(dirs):
images_list = os.listdir(dirs)
images_list.sort(key=lambda x: int(x[:-4])) # 根据头像名称排序
length = len(images_list) # 头像总数
image_size = 2560
# 每个头像大小
each_size = math.ceil(image_size / math.floor(math.sqrt(length)))
lines = math.ceil(math.sqrt(length)) # 列数
rows = math.ceil(math.sqrt(length)) # 行数
image = Image.new('RGB', (each_size * lines, each_size * rows))
row = 0
line = 0
os.chdir(dirs)
for file in images_list:
try:
with Image.open(file) as img:
img = img.resize((each_size, each_size))
image.paste(img, (line * each_size, row * each_size))
line += 1
if line == lines:
line = 0
row += 1
except IOError:
print(f"头像{file}异常,请查看")
continue
img = image.save(os.getcwd() + "/all.png")
if not img:
print('所有的微信头像已合成,请查阅all.png!')
def main():
dirs = WxFriendImage.get_image()
WxFriendImage.composite_image(dirs)
if name == 'main':
main()
复制代码</pre>
可以将代码复制到自己的编译器里面运行,效果是一样的。 至于打包成 .exe的程序就更简单了 在命令行中运行下面的命令即可
<pre class="hljs r" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 0.75em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">pyinstaller -F F:\wx\wx.py
复制代码</pre>
运行成功后,会在倒数第二行显示生成程序的路径 好了,以上就是用python合成微信好友头像的全部指南了 觉得对你有用,就帮忙点个赞呗...
网友评论