庆祝国庆节,想换头像?教你用Python搞定微信头像

2023-10-11 02:10

本文主要是介绍庆祝国庆节,想换头像?教你用Python搞定微信头像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

7026171083412faf8ad1aa735b9318bb.gif

微信改版,求求大家星标下公众号

不然后面推送大家可能会看不到

首发公众号:简说Python

作者:老表
编辑:老表

国庆节马上就要来了,庆祝国庆,大家的微信头像是不是该换换了?

今天给大家分享,如何使用Python给我们换好庆祝国庆微信头像。(

- 文末分享所有源码,欢迎微信交流

留言分享国庆旅行攻略,即有机会获得赠书

)

d58d33e9c185b94353663650d1d30195.jpeg

扫码回复:python,一起学习

步骤:

  • 获取庆国庆微信头像素材

  • 代码将素材和原头像合并

  • 手动替换微信头像

升级:

  • 写一个 Web UI:接收图片,然后随机返9种庆国庆微信头像

获取庆国庆微信头像素材

这一步可以网上搜索:国庆微信头像,可以找到很多在线网站,里面会有一些素材图片。

cb679ceb7e8206087922484e5258836b.png

本文素材来自:https://www.2weima.com/touxiang.html

未经许可,切勿商用。

下载处理好的模板图片:

20a69296dfbd559317ab28fe9abde76d.png

处理涉及代码:

  • 将文件夹下图片命名统一格式: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)

运行就可以获得这个效果图啦~

f0e0f953031d8edc3d2c23f9805006bb.png

写一个 Web UI:接收图片,然后随机返9种庆国庆微信头像

Web UI 嘛,就是一个web服务,有一个页面,可以上传图片,然后返回处理好的图片。

效果图:

  • 首页874a13d1f05cc6aa5cbf4d01b0952eb4.png

  • 头像列表页38b46220bb917b3de90452f33db49c04.png

代码比较多,就不贴文章里啦~

祝大家中秋、国庆双节快乐,本文所有源码、素材均已上传到开源网站:https://github.com/XksA-me/Chinese_Natinal_Day_Wechat_Avatar

创作不易,点个赞吧。

国庆节搞个福利活动,随意留言国庆节安排(期待大家分享旅游攻略~),字数越多越好,根据留言数量随机选5-10名读者朋友赠书一本。

赠书目录:公众号简说Python往期推文推荐图书均可。

--END--

数据分析从零开始实战
数据分析从零开始实战 | 基础篇(一)
数据分析从零开始实战 | 基础篇(二)
数据分析从零开始实战 | 基础篇(三)
数据分析从零开始实战 | 基础篇(四)2小时快速掌握Python基础知识要点
Python小知识 | 这些技能你不会?(一)
Python小知识 | 这些技能你不会?(二)
Python小知识 | 这些技能你不会?(三)
Python小知识 | 这些技能你不会?(四)

993378b378db3f692afc44b84def5e08.jpeg

扫码回复:python,一起学习

这篇关于庆祝国庆节,想换头像?教你用Python搞定微信头像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/184772

相关文章

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片