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

深圳二零八零工业设计有限公司 2026/09/09 17:48:27

我帮你写了一个表情包批量生成器,用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)"确保印刷级质量

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

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

房地产网站建设pc网站建设

💻 P12 【效率核弹】Pandas 自动化:告别手动处理 Excel🎯 学习目标:环境准备:利用 Agent 模式自动安装处

2026/06/30 13:15:35

广西网站建设公司网站建设类

本文将多次使用C语言中的scanf与getchar函数,带你充分理解输入缓冲区。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h&g

2026/06/30 10:33:51

建设银行网站网站制作建设

第一章:Dify响应Charset配置的核心概念Dify 作为一个支持多语言与国际化部署的低代码 AI 应用开发平台,其对字符集(Charset)

2026/06/30 14:11:39

网站建设论文网站建设解决方案

Claude 现已引入 Skills 功能,显著提升了其执行特定任务的能力。Skills 本质上是一个包含指令、脚本和资源的结构化文件夹,Claude 能够根据任务需求动态

2026/06/30 10:35:51

泰州网站建设咸阳网站建设

科研项目管理助手:Kotaemon实现进度自动提醒在科研团队的日常协作中,一个常见的场景是:项目截止日期临近,但部分成员的任务仍处于“进行中”状

2026/06/30 13:54:08

济南网站建设绍兴网站建设

快速体验打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容:开发一个技术文档网站原型,功能:1. 使用mar

2026/06/30 12:14:30

网站建设书网站建设团队

F2抖音去水印工具终极完整指南:从零开始轻松下载高清无水印视频【免费下载链接】TikTokDownload抖音去水印批量下载用户主页作品、喜欢、收藏、图文、音频项目地址: https:/

2026/06/30 10:38:21

孝感网站建设黄冈网站建设

汽车行业的供应商普遍需要符合IATF16949质量管理体系标准。该标准对工艺文件的规范性、变更控制和可追溯性有着严格规定。传统依赖文档管理的方式,在审计时常面临压力。我们之前的做法是使用

2026/06/30 11:04:53

沈阳网站建设涪陵网站建设

BMAD-METHOD揭秘:如何用AI实现规划文档到开发任务的终极自动化【免费下载链接】BMAD-METHODBreakthrough Method for Agile Ai Drive

2026/06/30 13:15:35

网站建设方案书旅游网站建设方案

第一章:Dify React 19.2.3 安全更新的紧迫性随着前端生态的快速发展,React 框架的版本迭代频繁引入新特性与安全补丁。Dify 基于 React 19.2

2026/06/30 13:47:37