You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python PIL库正确渲染全彩Emoji表情到图片?

全彩Emoji在PIL中渲染异常的解决方案

问题原因

  • 你当前使用的OpenSansEmoji字体本身仅包含单色Emoji矢量轮廓,无内置全彩资源,无法直接渲染出彩色效果
  • 低于9.1版本的Pillow原生draw.text()接口默认不支持解析彩色字体的色彩信息表,即使使用全彩Emoji字体也只会输出单色线条

解决步骤

方案一:升级Pillow+使用全彩Emoji字体(最简便)

  1. 升级Pillow到9.1及以上版本,该版本开始原生支持全彩字体渲染:
    pip install --upgrade pillow
  2. 使用内置全彩Emoji资源的字体,同时可以配置普通文本字体作为 fallback 覆盖中英文等常规字符
  3. 修改渲染代码,调用draw.text()时添加embedded_color=True参数开启彩色渲染,修改后代码如下:
from PIL import Image, ImageDraw, ImageFont

# 普通文本字体可根据需求替换,fallback配置全彩Emoji字体
text_font = ImageFont.truetype("msyh.ttc", size=20, encoding='unic',
                              fallback=[ImageFont.truetype("NotoColorEmoji.ttf", size=20)])
img = Image.new("RGBA", (400,100), (54, 57, 63))
draw = ImageDraw.Draw(img)
# 开启彩色字体渲染
draw.text((0,0), responceText, (255,255,255), font=text_font, embedded_color=True)
img = img.convert('RGB')
img.save("images/image_text.png")

方案二:低版本Pillow兼容方案

如果无法升级Pillow版本,可以先通过第三方库将文本中的Emoji单独提取出来转换为图片,再逐字计算位置将Emoji图片贴到文本渲染后的画布对应位置即可。

内容的提问来源于stack exchange,提问作者Jeremy Hsieh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:27:02