如何使用PIL绘制粗体/斜体文本?ImageFont.truetype(file, size)只有指定字体大小的选项。
如何使用PIL绘制粗体/斜体文本?ImageFont.truetype(file, size)只有指定字体大小的选项。
使用字体的粗体/斜体版本
到目前为止,还没有将粗体功能作为参数,但您可以通过向文本添加与文本相同颜色的描边来轻松解决此问题。这将使其看起来像是粗体字体。下面的代码将详细说明如何使用描边。
draw.text((x, y), text, fill=color, font=font, stroke_width=2,
stroke_fill="black")
如果(出于某种原因)您没有单独的粗体字体,那么一种相当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')
Times New Roman
)显示一个“文件”,但是如果你使用控制台浏览字体,你会发现每种字体样式实际上对应一个文件,例如times.ttf
、timesbd.ttf
、timesbi.ttf
、timesi.ttf
。 - undefined好的,这是我的第一条评论。我们开始吧。
我会尝试澄清这个过程。首先,我使用了字体的“名称”,如下所示:
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
我想起有些字体有其他“名称”或“文件名”,于是我进入字体文件夹,然后打开Arial字体,它显示了所有的样式,如negrita(加粗),cursiva(斜体)等。
在“negrita”样式上右键单击,选择“属性”,然后会显示字体的“实际名称”。
在我的情况下,名称为“ariblk”。
最后,只需像这样使用该名称即可。
font = ImageFont.truetype("C:\Windows\Fonts\\ariblk.ttf",25)
我知道这篇帖子很老,但今天它帮助我找到了解决方案。所以我希望能帮到任何人。
=)
def FindFontsVariantsWithBase(fontBase="arial"):
import matplotlib
system_fonts = matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf')
# for font in np.sort(system_fonts):
# print(font)
fonts = np.sort(system_fonts).tolist()
res = [i for i in fonts if fontBase in i]
print(res)
FindFontsVariantsWithBase("arial")
['C:\WINDOWS\Fonts\arial.ttf', 'C:\WINDOWS\Fonts\arialbd.ttf', 'C:\WINDOWS\Fonts\arialbi.ttf', 'C:\WINDOWS\Fonts\ariali.ttf', 'C:\Windows\Fonts\arial.ttf', 'C:\Windows\Fonts\arialbd.ttf', 'C:\Windows\Fonts\arialbi.ttf', 'C:\Windows\Fonts\ariali.ttf'] (
['C:\WINDOWS\Fonts\arial.ttf', 'C:\WINDOWS\Fonts\arialbd.ttf', 'C:\WINDOWS\Fonts\arialbi.ttf', 'C:\WINDOWS\Fonts\ariali.ttf', 'C:\Windows\Fonts\arial.ttf', 'C:\Windows\Fonts\arialbd.ttf', 'C:\Windows\Fonts\arialbi.ttf', 'C:\Windows\Fonts\ariali.ttf'] (