庆祝国庆节,想换头像?教你用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中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰