庆祝国庆节,想换头像?教你用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

相关文章

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

HTML提交表单给python

python 代码 from flask import Flask, request, render_template, redirect, url_forapp = Flask(__name__)@app.route('/')def form():# 渲染表单页面return render_template('./index.html')@app.route('/submit_form',

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给