如何使用Python PIL库为图片添加文字以实现表情包生成功能?
表情包添加自定义文字实现方案
实现思路
- 依赖PIL库的
ImageDraw、ImageFont两个扩展模块完成文字绘制,已经安装PIL的话不需要额外安装依赖 - 用内置
input()函数获取用户输入的自定义文字,如果你做GUI工具可以替换为对应框架的输入框组件取值逻辑 - 提前确定文字的绘制坐标(图片左上角为坐标原点,x轴向右为正,y轴向下为正)、字体、字号、颜色参数
- 绘制完成后可直接预览或保存到本地
完整代码示例
from PIL import Image, ImageDraw, ImageFont # 1. 打开表情包模板 im = Image.open("Two-Buttons.jpg") # 获取图片宽高,方便后续计算文字位置 width, height = im.size # 2. 获取用户输入的文字 top_text = input("请输入顶部文字:") bottom_text = input("请输入底部文字:") # 3. 配置字体参数,注意替换为你系统对应字体路径,避免中文乱码 # Windows系统字体路径示例:C:/Windows/Fonts/msyh.ttc(微软雅黑) # Mac系统字体路径示例:"/Library/Fonts/SimHei.ttf"(黑体) # Linux系统字体路径示例:"/usr/share/fonts/truetype/SimHei.ttf" font = ImageFont.truetype("C:/Windows/Fonts/msyh.ttc", size=40) # 4. 创建绘制对象 draw = ImageDraw.Draw(im) # 5. 绘制文字,可自行调整坐标、颜色 # 绘制顶部居中文字 top_text_bbox = draw.textbbox((0, 0), top_text, font=font) top_text_width = top_text_bbox[2] - top_text_bbox[0] top_x = (width - top_text_width) / 2 top_y = 20 # 距离顶部20像素 draw.text((top_x, top_y), top_text, font=font, fill="white", stroke_width=2, stroke_fill="black") # 绘制底部居中文字 bottom_text_bbox = draw.textbbox((0, 0), bottom_text, font=font) bottom_text_width = bottom_text_bbox[2] - bottom_text_bbox[0] bottom_x = (width - bottom_text_width) / 2 bottom_y = height - 60 # 距离底部60像素 draw.text((bottom_x, bottom_y), bottom_text, font=font, fill="white", stroke_width=2, stroke_fill="black") # 6. 预览并保存 im.show() im.save("生成的表情包.jpg")
可选调整说明
- 要修改文字位置直接调整对应坐标参数即可,不需要居中的话可以直接写死x、y的固定数值
fill参数对应文字颜色,可传入RGB元组比如(255,0,0)代表红色stroke_width和stroke_fill是文字描边参数,用来避免文字和背景色融在一起,不需要可以删掉这两个参数
内容的提问来源于stack exchange,提问作者Minnie
相关产品推荐
相关产品推荐

