本文主要是介绍庆祝国庆节,想换头像?教你用Python搞定微信头像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
微信改版,求求大家星标下公众号,
不然后面推送大家可能会看不到
首发公众号:简说Python
作者:老表
编辑:老表
国庆节马上就要来了,庆祝国庆,大家的微信头像是不是该换换了?
今天给大家分享,如何使用Python给我们换好庆祝国庆微信头像。(
- 文末分享所有源码,欢迎微信交流
- 留言分享国庆旅行攻略,即有机会获得赠书
)
扫码回复:python,一起学习
步骤:
获取庆国庆微信头像素材
代码将素材和原头像合并
手动替换微信头像
升级:
写一个 Web UI:接收图片,然后随机返9种庆国庆微信头像
获取庆国庆微信头像素材
这一步可以网上搜索:国庆微信头像,可以找到很多在线网站,里面会有一些素材图片。
本文素材来自:https://www.2weima.com/touxiang.html
未经许可,切勿商用。
下载处理好的模板图片:
处理涉及代码:
将文件夹下图片命名统一格式:xx.png(xx为数字序号)
import osdef rename_images(folder_path):# 检查文件夹是否存在if not os.path.exists(folder_path):print(f"文件夹 '{folder_path}' 不存在")return# 获取文件夹中的所有图片文件image_files = [f for f in os.listdir(folder_path) if f.endswith(('.png', '.jpg', '.jpeg', '.gif'))]# 对图片文件进行排序image_files.sort()# 重命名图片文件for i, file_name in enumerate(image_files):new_name = f"{i:02d}.png"os.rename(os.path.join(folder_path, file_name), os.path.join(folder_path, new_name))print("文件重命名完成")# 调用处理
folder_path = "./img" # 替换为你的文件夹路径
rename_images(folder_path)
模板文件图片尺寸统一设置成 700x700,不大不小
from PIL import Image
import osdef resize_images(folder_path):# 检查文件夹是否存在if not os.path.exists(folder_path):print(f"文件夹 '{folder_path}' 不存在")return# 获取文件夹中的所有图片文件image_files = [f for f in os.listdir(folder_path) if f.endswith(('.png', '.jpg', '.jpeg', '.gif'))]# 遍历并调整图片尺寸for file_name in image_files:file_path = os.path.join(folder_path, file_name)try:# 打开图片image = Image.open(file_path)# 调整尺寸为 700x700resized_image = image.resize((700, 700))# 保存覆盖原文件resized_image.save(file_path)print(f"{file_name} 调整尺寸成功")except Exception as e:print(f"{file_name} 调整尺寸失败: {str(e)}")# 调用函数
folder_path = "./img" # 替换为你的文件夹路径
resize_images(folder_path)
代码将素材和原头像合并
相关代码在四年前就和大家分享过,基本没啥变化。
基本思路:
读取模板图片
读取微信头像
将模板头像和原始头像缩放到一样大小
将模板头像覆盖到原始头像上,并保存为新头像
手动将新头像替换成微信头像
# -*- coding: utf-8 -*-
"""
@author = 老表
@date = 2019-09-24
@last = 2023-09-27
@个人公众号 : 简说Python
"""from PIL import Image
import matplotlib.pyplot as plt
import numpy as np"""
需求:给图片右下角添加中国国旗
欢迎国庆,喜庆74周年
"""# 图片合并
def handle_picture(style="01", avatar="./wechat.jpg"):'''style : 模板文件名称,我是以序号命名的avatar : 微信头像文件路径'''# 打开图片模版img1 = Image.open(f"./img/{style}.png")img1 = img1.convert('RGBA')# 打开原来的微信头像img2 = Image.open(avatar)img2 = img2.convert('RGBA')if img1.size > img2.size: # 判断图片大小,统一改为 size 小的尺寸# 修改图片尺寸size = img2.sizeimg1.thumbnail(size)else:# 修改图片尺寸size = img1.sizeimg2.thumbnail(size)# 图片粘贴选区loc = (0, 0) + size# 将img1 粘贴到 img2img2.paste(img1, loc, img1)img2.save(f"output/new_{style}.png") # 保存生成的头像图片return img2# 调用处理
# style 模板文件名称,00.png
# avatar 微信头像文件路径
handle_picture(style="01", avatar="./wechat.jpg")
批量生成
先写一个 display_images 函数,用于按指定行列格式显示处理好的图片,方便预览效果。
# 图片显示
def display_images(images_list, images_per_row=4, pixel_spacing=2):num_images = len(images_list)# 计算图片显示行数num_rows = (num_images + images_per_row - 1) // images_per_rowfig, axes = plt.subplots(num_rows, images_per_row, figsize=(15, 15))axes = axes.flatten()for i, image in enumerate(images_list):axes[i].imshow(np.asarray(image))axes[i].axis('off')axes[i].set_title(f'Image {i+1}')# 隐藏多余的子图for j in range(num_images, len(axes)):fig.delaxes(axes[j])plt.tight_layout(pad=pixel_spacing)plt.show()
然后直接使用for循环调用之前写好的头像合并函数即可。
images = []
for i in range(12):if i < 10:i = f"0{i}"images.append(handle_picture(i))# 调用函数来显示图片
display_images(images, images_per_row=4, pixel_spacing=2)
运行就可以获得这个效果图啦~
写一个 Web UI:接收图片,然后随机返9种庆国庆微信头像
Web UI 嘛,就是一个web服务,有一个页面,可以上传图片,然后返回处理好的图片。
效果图:
首页
头像列表页
代码比较多,就不贴文章里啦~
祝大家中秋、国庆双节快乐,本文所有源码、素材均已上传到开源网站:https://github.com/XksA-me/Chinese_Natinal_Day_Wechat_Avatar
创作不易,点个赞吧。
国庆节搞个福利活动,随意留言国庆节安排(期待大家分享旅游攻略~),字数越多越好,根据留言数量随机选5-10名读者朋友赠书一本。
赠书目录:公众号简说Python往期推文推荐图书均可。
--END--
数据分析从零开始实战
数据分析从零开始实战 | 基础篇(一)
数据分析从零开始实战 | 基础篇(二)
数据分析从零开始实战 | 基础篇(三)
数据分析从零开始实战 | 基础篇(四)2小时快速掌握Python基础知识要点
Python小知识 | 这些技能你不会?(一)
Python小知识 | 这些技能你不会?(二)
Python小知识 | 这些技能你不会?(三)
Python小知识 | 这些技能你不会?(四)
扫码回复:python,一起学习
这篇关于庆祝国庆节,想换头像?教你用Python搞定微信头像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!