【问题标题】:Font Error When Drawing Text to an Image将文本绘制到图像时出现字体错误
【发布时间】:2013-04-30 20:12:56
【问题描述】:

我正在编写一个脚本,该脚本从我的学校成绩网站获取我的成绩并将成绩绘制到图像上并将其保存为我的背景,当我将文本绘制到图像上时我试图更改字体但我遇到错误

这是我正在尝试的代码:

font = ImageFont.load('C:\WINDOWS\Fonts\CALIBRI.TTF')
img = Image.open('bg.bmp')
draw = ImageDraw.Draw(img)

now = datetime.datetime.now()


draw.text((625, 425),'                      CURRENT GRADES' )
draw.text((625, 475), 'Period 1: Geography -----------------------------{0}'.format(a),("blue"),(font))
draw.text((625, 525), 'Period 2: Francais-------------------------------{0}'.format(b),("red"),(font))
draw.text((625, 575), 'Period 3: Science--------------------------------{0}'.format(c),("orange"),(font))
draw.text((625, 625), 'Period 4: P.E------------------------------------{0}'.format(d),("blue"),(font))
draw.text((625, 675), 'Period 5: Algebra 9------------------------------{0}'.format(e),("red"),(font))
draw.text((625, 725), 'Period 6: LA-------------------------------------{0}'.format(f),("orange"),(font))
draw.text((625, 775), 'Last Updated: {0}'.format(now))

img.save('mod_bg.bmp')

但是当我这样做时,我会收到以下错误消息:

Traceback (most recent call last):
  File "C:\Python27\Project.py", line 45, in <module>
     font = ImageFont.load('C:\WINDOWS\Fonts\CALIBRI.TTF')
  File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 193, in load
    f._load_pilfont(filename)
  File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 91, in _load_pilfont
    raise IOError("cannot find glyph data file")
IOError: cannot find glyph data file

谁能告诉我为什么这不起作用以及我应该怎么做

【问题讨论】:

    标签: python fonts python-imaging-library


    【解决方案1】:

    我遇到了这个错误,我相信这是因为您安装的 PIL 是在没有 libfreetype 的情况下编译的。为此,您必须安装 freetype2 然后编译 PIL。见

    Python: The _imagingft C module is not installed

    您也可以尝试 Pillow,它是 PIL 库的更新分支

    https://pypi.python.org/pypi/Pillow/2.0.0

    【讨论】:

      【解决方案2】:

      load() 和 load_path() 函数只能用于 位图 字体文件。由于您正在尝试加载 TrueType 字体 (.ttf),因此您应该使用 truetype() 函数。

      from PIL import ImageFont
      font = ImageFont.truetype(r'C:\WINDOWS\Fonts\CALIBRI.TTF')
      

      PIL / Pillow 库可能在您发布问题后发生了变化,因此我建议您查阅您正在使用的库的相应文档。

      旁注 - 在字符串文字(尤其是 Windows 文件路径)中使用反斜杠时要小心。反斜杠是转义字符。例如,'\n' 是一个换行符,而不是两个字符。您应该使用另一个反斜杠 ('C:\\WINDOWS\\Fonts\\CALIBRI.TTF') 转义每个反斜杠,或者使用“原始”字符串文字来防止反斜杠被解释 (r'C:\WINDOWS\Fonts\CALIBRI.TTF')。

      如有疑问,请print() 解决。

      【讨论】:

      • truetype() 也可用于加载 OpenType (.otf) 字体。
      猜你喜欢
      • 2015-04-25
      • 2020-04-05
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      相关资源
      最近更新 更多