在PIL中使用字体而不需要freetype

3

您好,我正在使用没有lib-freetype的PIL(Python Image Library)。

是否有可能在不安装freetype的情况下使用字体(我只需要调整文本大小,不需要更多!)?

或者是否有可能设置字体的大小,而不设置字体的truetype,因此使用默认的truetype?

这是一个在服务器上的项目,在该项目中,我只能安装纯粹的PIL,没有任何支持truetypes的扩展!


你能更详细地描述一下你的项目吗?当你说“我只需要调整文本大小”时,你是指什么? - Gareth Rees
我正在使用Python中的PIL创建一个.png图像。使用绘图库,我向图像添加了文本。为此,我不需要freetype,truetypes或其他内容。 现在我想设置文本的(字体)大小。我可以通过font = ImageFont.truetype(filename, size, index, encoding)来实现这一点... 但是要使用此选项,我需要freetype,因为第一个参数需要它!因此,我的问题是,是否可以避免此参数和freetype!也许在PIL中有其他大小选项? - user1665232
尝试这段代码: font = ImageFont.truetype('Arial.ttf', 20) 我得到了以下错误:ImportError: The _imagingft C module is not installed我认为这是因为我没有安装freetype。 - user1665232
1个回答

4

如果你阅读了Python Imaging Library的ImageFont模块的手册,你会发现它支持位图字体的PILFont格式。

因此,在你自己的电脑上,以你想要的大小渲染你的TrueType字体,将位图保存为PILFont格式,然后在服务器上使用PILFont。你可以使用otf2bdf将TrueType字体转换为BDF(Bitmap Distribution Format),然后使用PIL的pilfont实用程序将BDF转换为PILFont。请参见这个问题及其答案


1
非常感谢,我会尝试这个方法。所以如果不指定字体类型或使用默认字体,我就无法“缩放”或设置文本大小了? - user1665232
一个PILFont是一种位图字体,因此(与TrueType字体不同),它不能进行缩放。您需要在每个要绘制的大小上单独呈现字体。我想您可以尝试在最大需要的大小上呈现它一次,并使用Image.transform将其缩小。但结果不会像TrueType自己的缩放那样好。 - Gareth Rees
为什么我在尝试使用TrueType字体时会收到错误消息:“未安装_imagingft C模块”?我已经在Pil文件夹中找到了_imagingft.pyd,那为什么它不能正常工作呢? - user1665232
导入错误:DLL 加载失败:无法启动此应用程序,因为应用程序配置不正确。要解决问题,请重新安装该应用程序。 - user1665232
这个错误信息的英文版本似乎是“此应用程序无法启动,因为应用程序配置不正确。重新安装该应用程序可能会解决此问题。” 我不是Windows专家,但可能是缺少依赖项或版本不匹配?这似乎是由管理此服务器的人员处理的问题。 - Gareth Rees
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接