如何用PIL绘制加粗/斜体文本?

34 投票
6 回答
36912 浏览
提问于 2025-04-15 16:29

如何用PIL绘制粗体或斜体文字?ImageFont.truetype(file, size)这个函数只能设置字体大小,没有选项可以直接选择粗体或斜体。

6 个回答

9

如果你没有单独的粗体字版本,但又想让字体变粗,可以用一种比较“hacky”的方法:把同样的文字打印几次,只是稍微移动一下位置。

andaleMono = ImageFont.truetype(ANDALE_MONO_PATH,16)
text = "hello world"
mainOffset = (50,50)
xoff, yoff = mainOffset
draw.text(mainOffset,text,font=andaleMono,fill='black')
draw.text((xoff+1,yoff+1),text,font=andaleMono,fill='black')
draw.text((xoff-1,yoff-1),text,font=andaleMono,fill='black')
11

到目前为止,参数中没有粗体字的功能,但你可以通过给文字添加与文字颜色相同的描边来轻松解决这个问题。这样看起来就像是粗体字了。接下来的代码会详细说明如何使用描边。

    draw.text((x, y), text, fill=color, font=font, stroke_width=2,
          stroke_fill="black")
29

使用字体的粗体/斜体版本

撰写回答