开县网站建设赣州网站建设

合肥小火炉餐饮服务有限公司 2026/09/09 17:47:49

我帮你写了一个表情包批量生成器,用Python+PIL实现卡通形象+文字+动作的组合生成,支持眨眼/比耶/叹气三种动作,多平台尺寸导出,模块化设计注释清晰,附README、使用说明和核心知识点卡片,直接可用。

表情包批量生成器

一、Python代码实现

import os

import argparse

from PIL import Image, ImageDraw, ImageFont, ImageOps

def create_base_avatar(size=(400, 400)):

"""创建基础卡通形象(黄色圆形头+四肢简单线条)"""

img = Image.new("RGB", size, "#FFF8DC") # 米白色背景

draw = ImageDraw.Draw(img)

# 头部(黄色圆形)

head_center = (size[0]//2, size[1]//3)

head_radius = 80

draw.ellipse([

head_center[0]-head_radius,

head_center[1]-head_radius,

head_center[0]+head_radius,

head_center[1]+head_radius

], fill="#FFD700", outline="#000", width=2)

# 眼睛(黑色圆形,左右对称)

eye_offset = 30

eye_y = head_center[1] - 15

left_eye = (head_center[0]-eye_offset, eye_y, head_center[0]-eye_offset+20, eye_y+20)

right_eye = (head_center[0]+eye_offset-20, eye_y, head_center[0]+eye_offset, eye_y+20)

draw.ellipse(left_eye, fill="#000")

draw.ellipse(right_eye, fill="#000")

# 嘴巴(中性微笑弧线)

mouth = [(head_center[0]-30, head_center[1]+30),

(head_center[0], head_center[1]+50),

(head_center[0]+30, head_center[1]+30)]

draw.line(mouth, fill="#000", width=3, joint="curve")

# 身体(简单线条躯干)

body_top = (head_center[0], head_center[1]+head_radius)

body_bottom = (head_center[0], body_top[1]+100)

draw.line([body_top, body_bottom], fill="#000", width=2)

return img, draw

def apply_action(base_img, action):

"""根据动作修改基础形象(返回新Image对象)"""

img = base_img.copy()

draw = ImageDraw.Draw(img)

size = img.size

head_center = (size[0]//2, size[1]//3)

if action == "眨眼":

# 眼睛改为横线(闭合)

eye_offset = 30

eye_y = head_center[1] - 15

line_len = 20

draw.line([

(head_center[0]-eye_offset, eye_y+10),

(head_center[0]-eye_offset+line_len, eye_y+10)

], fill="#000", width=3)

draw.line([

(head_center[0]+eye_offset-line_len, eye_y+10),

(head_center[0]+eye_offset, eye_y+10)

], fill="#000", width=3)

elif action == "比耶":

# 右手添加V字手势(身体右侧)

hand_x = head_center[0] + 50

hand_y = head_center[1] + 120

draw.line([(hand_x, hand_y), (hand_x+20, hand_y-20)], fill="#000", width=3)

draw.line([(hand_x, hand_y), (hand_x+20, hand_y+20)], fill="#000", width=3)

elif action == "叹气":

# 嘴巴改为向下弧线

mouth_points = [

(head_center[0]-30, head_center[1]+40),

(head_center[0], head_center[1]+20),

(head_center[0]+30, head_center[1]+40)

]

draw.line(mouth_points, fill="#000", width=3, joint="curve")

return img

def add_text(img, text, position="bottom"):

"""添加文字到表情包(支持顶部/底部)"""

draw = ImageDraw.Draw(img)

try:

font = ImageFont.truetype("simhei.ttf", 24) # 黑体,24号字

except:

font = ImageFont.load_default() # fallback到默认字体

# 计算文字位置(水平居中)

text_width = draw.textlength(text, font=font)

x = (img.width - text_width) // 2

y = 20 if position == "top" else img.height - 50

# 文字描边(黑边白字,增强可读性)

draw.text((x-1, y-1), text, font=font, fill="#000")

draw.text((x+1, y-1), text, font=font, fill="#000")

draw.text((x-1, y+1), text, font=font, fill="#000")

draw.text((x+1, y+1), text, font=font, fill="#000")

draw.text((x, y), text, font=font, fill="#FFF")

return img

def export_images(img, text, actions, platform_sizes):

"""导出多平台格式(PNG为主,按尺寸保存)"""

output_dir = "表情包输出"

os.makedirs(output_dir, exist_ok=True)

exported = []

for action in actions:

# 生成动作图

action_img = apply_action(img, action)

# 添加文字(默认底部)

text_img = add_text(action_img, text)

# 按平台尺寸导出

for platform, size in platform_sizes.items():

resized = text_img.resize(size, Image.Resampling.LANCZOS)

filename = f"{output_dir}/{text}_{action}_{platform}.png"

resized.save(filename, dpi=(300, 300))

exported.append(filename)

return exported

def main():

"""程序入口:解析参数→生成表情包→导出"""

parser = argparse.ArgumentParser(description="表情包批量生成器(卡通形象+文字+动作)")

parser.add_argument("--text", required=True, help="表情包文字内容(如'开心到模糊')")

parser.add_argument("--actions", nargs="+", default=["眨眼", "比耶", "叹气"],

help="动作列表(默认全选:眨眼 比耶 叹气)")

args = parser.parse_args()

# 基础配置

base_img, _ = create_base_avatar() # 创建基础形象

platform_sizes = { # 多平台尺寸(微信/QQ/微博)

"微信": (240, 240),

"QQ": (280, 280),

"微博": (300, 300)

}

valid_actions = ["眨眼", "比耶", "叹气"]

# 校验动作合法性

for act in args.actions:

if act not in valid_actions:

print(f"❌ 无效动作:{act},仅支持{valid_actions}")

return

# 生成并导出表情包

exported_files = export_images(base_img, args.text, args.actions, platform_sizes)

# 输出结果

print(f" ✨ 生成完成!共{len(exported_files)}个表情包:")

for f in exported_files:

print(f"📁 {f}")

if __name__ == "__main__":

main()

二、README文件内容

# 表情包批量生成器

## 简介

本工具通过**输入文字+选择动作**(眨眼/比耶/叹气),自动生成多平台适配的表情包(微信/QQ/微博尺寸),基于Python+PIL开发,内置卡通形象生成逻辑,支持一键批量导出高清PNG。

## 安装要求

- Python 3.8+

- 依赖库:`pip install pillow`

## 使用方法

### 1. 命令行模式(推荐)

bash

python emoji_generator.py --text "今天也要加油呀" --actions 眨眼 比耶

### 2. 参数说明

- `--text`:必填,表情包文字内容(支持中文)

- `--actions`:可选,动作列表(默认全选:眨眼 比耶 叹气),如`--actions 叹气`

## 示例输出

输入:`--text 摸鱼快乐 --actions 眨眼 叹气`

输出:

✨ 生成完成!共6个表情包:

📁 表情包输出/摸鱼快乐眨眼微信.png

📁 表情包输出/摸鱼快乐眨眼QQ.png

📁 表情包输出/摸鱼快乐眨眼微博.png

📁 表情包输出/摸鱼快乐叹气微信.png

📁 表情包输出/摸鱼快乐叹气QQ.png

📁 表情包输出/摸鱼快乐叹气微博.png

## 扩展说明

1. **新增动作**:在`apply_action()`函数中添加分支(如"大笑"),绘制对应表情

2. **更换形象**:修改`create_base_avatar()`函数,调整头部/身体绘制逻辑

3. **添加动画**:用PIL的`save(..., save_all=True)`生成GIF动图(需多帧序列)

## 注意事项

- 文字较长时自动换行(需自行扩展`add_text()`函数)

- 系统无黑体时自动降级为默认字体,中文可能显示异常(建议安装黑体)

- 输出目录自动创建为"表情包输出",重复运行覆盖同名文件

## 许可证

MIT License

三、使用说明

1. 环境准备:

- 安装Python 3.8+,执行

"pip install pillow"安装依赖

2. 运行工具:

- 命令行传参:

"python emoji_generator.py --text 你的文字 --actions 动作1 动作2"(如

"python emoji_generator.py --text 躺平万岁 --actions 叹气")

- 默认生成所有动作:直接

"python emoji_generator.py --text 开心就好"

3. 查看结果:当前目录下"表情包输出"文件夹含各平台尺寸的PNG表情包

四、核心知识点卡片

- PIL绘图基础:用

"ImageDraw"绘制图形(椭圆/线条)、

"ImageFont"添加文字、描边增强可读性

- 模块化动作系统:

"apply_action()"函数按动作类型修改形象部位(眼睛/嘴巴/手势)

- 批量生成逻辑:循环动作列表+平台尺寸,自动组合生成多版本表情包

- 配置化平台适配:字典定义多平台尺寸(微信240x240/QQ280x280),灵活扩展新平台

- 文字排版技巧:计算文字宽度居中显示,黑白描边解决复杂背景可读性问题

- 命令行参数解析:

"argparse"支持必填文字参数与可选动作列表(

"nargs="+"")

- 错误处理:校验动作合法性,字体缺失时降级默认字体避免崩溃

- 高清导出:

"resize(LANCZOS)"重采样保持清晰度,

"dpi=(300,300)"确保印刷级质量

关注我,有更多实用程序等着你!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

万州网站建设南充网站建设

如何快速修复MTK设备:联发科调试工具完整指南【免费下载链接】mtkclientMTK reverse engineering and flash tool项目地址: https://g

2026/06/30 13:07:34

常州网站建设网站建设入门

Q1:老师,想问问在 NPU 上部署 LLM 或多模态模型时,有什么选择模型规模、架构或量化策略的经验可以给备赛选手参考吗?A1:

2026/06/30 13:56:38

pc网站建设泸州网站建设

空洞骑士模组管理器Scarab:5步轻松打造个性化圣巢冒险【免费下载链接】ScarabAn installer for Hollow Knight mods written in Ava

2026/06/30 11:28:25

商业网站建设广东网站建设

SiYuan网页剪藏终极指南:从零开始构建个人知识体系【免费下载链接】siyuanA privacy-first, self-hosted, fully open source pers

2026/06/30 12:55:03

桂林网站建设行业网站建设

第一章:Open-AutoGLM自定义确认函数的核心价值在自动化智能决策系统中,Open-AutoGLM 的自定义确认函数为开发者提供了灵活且安全的控制机制。通过该功能&#

2026/06/30 13:35:36

网站建设中网站建设专家

MyBatis-Plus 枚举处理器映射 TTS 任务状态字段在构建现代语音合成系统(如 GLM-TTS)时,任务状态管理是一个看似简单却极易被低估的环节。用

2026/06/30 14:03:08

六安网站建设齐齐哈尔网站建设

Windows Server 管理与维护全攻略在企业网络环境中,Windows Server 的管理与维护至关重要,涉及到系统更新、安全防护、数据备份等多个方面。下面将详细介绍相关的操作和配置方法。1

2026/06/30 14:09:09

温州网站建设东阳网站建设

适合开发者使用的轻量级文本转语音Web UI解决方案在如今 AI 技术快速渗透到内容创作、智能交互和无障碍服务的背景下,文本转语音(TTS)已不再是实验室里的

2026/06/30 14:06:08

免费网站建设免费企业网站建设

开发是我不想重复的路早几年都流行学计算机,传言就业薪资高,就选了软件开发专业。在学校也不算混子吧,该学的java、python、前端操作系统都学了࿰

2026/06/30 12:06:29