前言

用 python 代码写了一个一键生成合成微信好友头像的程序,效果如下:

不会写代码?没关系!只要你会使用电脑就 ok!

因为除了用代码方式生成外,还建了一个 .exe 的程序,在电脑点击运行就完事了

下面分别详细的给大家讲解是如何实现的

程序使用教程

1.公众号后台回复 “wx”即可获取 .exe 程序

20190421163538.png

2.在windows上点击运行,会弹出一个微信登陆的二维码,用手机微信扫描,确认登录。

3.登陆成功后,会显示保存的头像,最后会在程序运行的目录生成一张 all.png 的图片

当看到 "所有的微信头像已合成,请查阅all.png!" 的时候,你要的头像墙就在 wxImages 文件夹里面

20190421164723.png

你可以把这张图发到朋友圈,随便配个文案,随后就等着大波点赞吧。

代码教程

代码其实很简单,主要是做起来觉得很有意义,如果你会python基础,再加上下面的讲解,你也可以的!

首先新建一个虚拟环境。为什么要虚拟环境?怎么建虚拟环境? 我之前的文章有写,去历史消息翻翻就能找到

虚拟环境

虚拟环境的名字随意取,我取的是 “wx”

在pycharm 中导入刚才建好的虚拟环境

3.主要用到下面三个库:

wxpy

用来操作微信的,除了获取头像,还能给好友发消息,具体可查看官方文档

pillow <=4.2.1

处理头像

pyinstaller

将代码打包成 .exe 程序的

接下来就是写代码了

微信登陆部分代码

@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!')

核心代码完成后,将两部分合一起再导入需要的包,就完事了

源码在此

# 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()

可以将代码复制到自己的编译器里面运行,效果是一样的。

至于打包成 .exe的程序就更简单了

在命令行中运行下面的命令即可

pyinstaller -F F:\wx\wx.py

运行成功后,会在倒数第二行显示生成程序的路径

好了,以上就是用python合成微信好友头像的全部指南

公众号 自动生成海报 python_用python一键生成一张全部微信好友的头像墙相关推荐

  1. python头像教程_教你用 Python 生成一张全体微信好友的头像墙

    |前言 还记得前阵子这篇文章么: 『又来瞎鼓捣』微信群友相隔远?那也一键生成全家福 ,用来给群好友生成一张头像全家福的. 搞完那个之后我就在想,要不写一个微信好友全家福的吧?我微信里有一千多号人,生成 ...

  2. 公众号 自动生成海报 python_用python制作一个保存微信公众号里面可爱的小姐姐图的软件...

    [Python] 纯文本查看 复制代码import os import requests from bs4 import BeautifulSoup import datetime import os ...

  3. 微信公众号带场景参数的二维码生成与使用?

    2019独角兽企业重金招聘Python工程师标准>>> 微信公众号推广时,用户通过扫码关注公众号,统计用户是通过哪个带场景二维码进行关注的,并对用户自动分组打标签备注.直接使用微号帮 ...

  4. 教你搭建微信公众号自动答复机器人

    图灵机器人接口调用限制的解决     昨天我们的文章中说到:使用图灵机器人作为应答机器人可以满足要求,但是每天的回复条数在不花钱的情况下只能有100条.对于我这样贫困线人口怎么可能每个月花费99元就为 ...

  5. 天越公众号系统粉丝海报裂变用法及介绍

    生成带参数二维码功能是微信为服务号提供的一个接口,主要目的是为了满足用户渠道推广分析的需要,使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送. 这个功能可以大大提升服务 ...

  6. python3 实现公众号自动发消息

    python3 实现公众号自动发消息 前言 微信公众号测试号申请 申请测试公众号 测试号信息 测试号二维码 模板消息接口 新增流程 python 脚本配置 access_token.py send_m ...

  7. uniapp、uniCloud实现微信公众号自动查询淘宝京东优惠券制作过程

    uniapp.uniCloud实现微信公众号自动查询淘宝京东优惠券制作过程 微信公众号自动查询淘宝京东优惠券机器人制作教程.服务器通过uniapp提供的uniCloud云服务搭建,建议使用阿里云,不要 ...

  8. UI-网站首页轮播图、易拉宝、发布在微信公众号的宣传海报的图片设计信息

    UI交互设计 一."新建" 常见的颜色模式: 颜色模式,是将某种颜色表现为数字形式的模型,或者说是一种记录图像颜色的方式.分为:RGB模式.CMYK模式.HSB模式.Lab颜色模式 ...

  9. 用localStorage实现微信公众号自动登录

    实现微信公众号自动登录功能,我之前是想用cookie去实现,毕竟cookie可以在java后台进行操作,但是在微信公众号一直测试失败,查资料说是微信授权会进行一次跳转,无法将cookie携带到页面,暂 ...

最新文章

  1. Ocelot(二)- 请求聚合与负载均衡
  2. union--求集合的并集
  3. Android异步任务机制之AsycTask
  4. 程序员面试100题之六:最长公共子序列
  5. [洛谷P4012] [网络流24题] 深海机器人问题
  6. 接收端收到数据包以后的处理过程
  7. phaser设置图片资源大小
  8. 前端笔记-vue中引入Bootstrap
  9. Java 反射 set get
  10. flask 模板 php,Flask 模板系统
  11. 要注意了!这样使用MyBatis框架,被攻击了!
  12. 2.1.3 Sorting a Three-Valued Sequence 三值的排序
  13. springboot-admin对springboot项目监控
  14. 计算机桌面文件删除不掉是怎么了,桌面上文件删不掉_桌面上的压缩文件为什么删除不了?...
  15. java jersey_Jersey框架
  16. 企业内部网路怎么防止网络出现环路?
  17. 头哥实践教学平台 CC++程序设计(计算机程序设计)基本输入输出
  18. 传感器课程实验:传感器静态特性研究-应变式传感器
  19. html table边框加粗,table加边框记录
  20. 圣诞节!教你用 Python 画棵圣诞树

热门文章

  1. 常见步进电机的特点、选型方法以及型号参数说明基本知识
  2. 编号10003 网络工程师(p5-p7)
  3. SpringBoot项目,网站【代号Sham】已发布测试版本
  4. 想哭如何解压Zip文件的
  5. 修改ureport2源码(1)搭建开发环境
  6. 一幅长文细学React(一)——入门
  7. vr应急救援模拟系统是什么何优势|广州华锐互动
  8. 生物医学关键词及基础知识学习笔记
  9. 语音识别(Speech recognition)的核心内容是将语音转换成文字
  10. 惠普电脑怎么用u盘重装Win10系统