用PIL绘制粗体/斜体文字?

时间:2009-11-29 10:16:05

标签: python text fonts python-imaging-library draw

如何用PIL绘制粗体/斜体文字? ImageFont.truetype(文件,大小)有一个选项来指定字体大小。

5 个答案:

答案 0 :(得分:14)

使用字体的粗体/斜体

答案 1 :(得分:4)

许多字体使用不同的TTF文件作为粗体/斜体版本,所以我想如果您只指定该文件就可以使用。

答案 2 :(得分:3)

如果(无论出于什么原因)你没有单独的粗体版本的字体,那么使字体变粗的一个相当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')

答案 3 :(得分:1)

嗯,这是我的第一个评论。我们走了。

我会尝试澄清这个程序。起初我做的是使用" name"像这样的字体

font = ImageFont.truetype("C:\Windows\Fonts\\Arial Negrita.ttf",25)

但只有这样的错误:

    Traceback (most recent call last):
  File "C:/Users/555STi/PycharmProjects/PIL/img.py", line 8, in <module>
    font = ImageFont.truetype("C:\Windows\Fonts\Arial negrita.ttf",25)
  File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 262, in truetype
    return FreeTypeFont(font, size, index, encoding)
  File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 142, in __init__
    self.font = core.getfont(font, size, index, encoding)
IOError: cannot open resource

然后我记得有时字体有其他的名字&#34;或&#34;文件名&#34;,所以,我做的是去字体文件夹,然后打开Arial字体,显示所有样式,如negrita(粗体),cursiva(斜体)等。

右键点击&#34; negrita&#34;风格,选择&#34;属性&#34;然后就是真正的名字&#34;字体。

就我而言,名字是&#34; ariblk&#34;

然后,最后,只使用了这样的名字。

font = ImageFont.truetype("C:\Windows\Fonts\\ariblk.ttf",25)

我知道这篇文章很老,但今天帮助我找到解决方案。所以我希望能帮助任何人。

=)

答案 4 :(得分:1)

到目前为止还没有粗体特征作为参数,但您可以通过向文本添加相同颜色的笔画来轻松解决。下一段代码详细说明如何使用笔画,这将是有意义的,因为粗体字体

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