- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
ImageFont.truetype
需要一个文件名才能工作,例如:
font = ImageFont.truetype("ariblk.ttf") # Arial Black
PIL
有没有办法按名称而不是文件名加载字体?
上下文:我想加载一个粗体(重量很重)的无衬线字体,它可以在任何平台 Windows、Linux、Mac 上工作。
我不认为 ImageFont.truetype("ariblk.ttf")
可以跨平台工作,是否可以使用 ImageFont.truetype("Arial Black") 加载它
或者更好的 ImageFont.truetype("sans-serif;bold")
可以在所有平台上运行?
最佳答案
查看 Pillow 的文档 ImageFont
模块,没有这样的选项,没有。
一个方便的解决方法可能是使用 Matplotlib 的 font_manager
模块:一个用于跨平台查找、管理和使用字体的模块。 使用 FontProperties
和 findfont
,您应该获得具有给定属性的字体的有效路径,然后您可以在常见的 ImageFont.truetype
调用中使用它。
这是一个小例子,它在我的 Windows 机器上运行良好。不幸的是,我附近没有任何其他操作系统可供测试。
from matplotlib import font_manager
from PIL import Image, ImageDraw, ImageFont
font = font_manager.FontProperties(family='sans-serif', weight='bold')
file = font_manager.findfont(font)
print(file)
img = Image.new('RGB', (400, 300), (255, 255, 255))
draw = ImageDraw.Draw(img)
font = ImageFont.truetype(file, 48)
draw.text((20, 20), 'Hello World', font=font, fill=(255, 0, 0))
img.save('test.png')
打印
输出:
...\Lib\site-packages\matplotlib\mpl-data\fonts\ttf\DejaVuSans-Bold.ttf
图像输出:
----------------------------------------
System information
----------------------------------------
Platform: Windows-10-10.0.16299-SP0
Python: 3.9.1
Matplotlib: 3.3.4
Pillow: 8.1.0
----------------------------------------
关于python - 通过字体名称而不是文件名和跨平台字体选择 PIL.ImageFont,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66274858/
ImageFont.truetype 需要一个文件名才能工作,例如: font = ImageFont.truetype("ariblk.ttf") # Arial Black PIL 有没有办法按
我的 python-FotoBox-Script 在我的 Ubuntu labtop 上工作得很好,但是在运行 Raspbian 的 Raspberry-Pi 上脚本有以下问题: pi@raspber
我正在尝试使用 PIL 来预先计算给定文本行在给定字体和大小下的大小。 PIL 似乎或多或少是唯一可行的解决方案。 我不确定font.textsize(..) 返回值的单位是什么。 doc没有具体
我正在尝试计算等宽字体(我希望保持一致)中字形的宽度和高度,但是 ImageFont.getsize()给定不同的单字符串返回不同的值: >>> from PIL import ImageFont >
这个问题在这里已经有了答案: Finding out what characters a given font supports (14 个答案) 关闭 6 年前。 这是一个简短的example .
我创建了一个位图字体,基本上是一个 256x256 png 图像,其中每个字符占据 8x8 block 。我想将它与 Pillow 一起用作 ImageFont,但 Pillow 文档中没有这方面的信
我是第一次使用 chemlab 库。我正在尝试运行一些示例程序,但不断收到以下错误消息: import ImageFont # From PIL ImportError: No module name
我使用以下两种方法为.ttf 字体文件生成文本预览图像 PIL方法: def make_preview(text, fontfile, imagefile, fontsize=30): try
我正在使用 Python 的图像处理库来渲染使用不同字体的字符图像。 这是我用来遍历字体列表和字符列表以输出每种字体的字符图像的代码片段。 from PIL import Image, ImageFo
我正在使用 PIL 的 ImageFont 模块加载字体以生成文本图像。我希望文本紧紧地绑定(bind)到边缘,但是,当使用 ImageFont 获取字体高度时,它似乎包括字符的填充。如红色矩形所示。
我是 Python 新手,尝试运行以下代码。我收到以下错误 “IOError:无法打开资源”。这是因为某些图像特征不再存在(例如 Coval.otf),还是可能是由于写入/读取限制?请让我知道 - 非
当我在 Windows 中编写代码时,这段代码可以很好地加载字体文件: ImageFont.truetype(filename='msyhbd.ttf', size=30); 我猜字体位置是在 Win
我正在尝试使用框绘图字符编写 tiff 图像,但所有有问题的字符都显示为: 方框绘制字符(例如“┌─┐│└┘╞=╡╤╧╘╛”)直接粘贴到源代码中,保存到文本文件时它们正确显示,但我不明白为什么它们'没
我正在使用 python 生成 token 作为安全措施。这是代码: from PIL import Image, ImageDraw, ImageFont image
我已经成功地将一些 Python 代码移植到使用 PIL 的 ImageFont 和 ImageDraw 生成动态图像的 App Engine。唯一剩下的问题是原始代码使用如下调用加载 TrueTyp
背景:我正在编写一个模块来创建带有多个进度条(0-5)的自定义启动屏幕。初始屏幕可以以多种模式显示(全屏无帧、带/不带帧的屏幕百分比或带/不带帧的固定大小),并且可以容纳 0-5 个链接的进度表。进度
我是一名优秀的程序员,十分优秀!