庆祝国庆节,想换头像?教你用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调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(