如何用PIL绘制粗体/斜体文字? ImageFont.truetype(文件,大小)有一个选项来指定字体大小。
答案 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")