【发布时间】:2021-05-29 02:35:13
【问题描述】:
我正在尝试在 python 中使用 Pillow 查找某些文本的大小,以磅为单位。据我了解,以磅为单位的字体大小对应于目标显示器或表面上的实际物理英寸,每英寸 72 磅。当我使用 Pillow 的 textsize 方法时,我可以找到以给定字体大小(以磅为单位)呈现的某些文本的像素大小,但不知道如何返回以英寸为单位的坐标系,因为我不知道'没有(也不能设置)图像的像素密度:
from PIL import Image, ImageFont, ImageDraw
image = Image.new('RGBA', (400, 300), (255, 255, 255))
font = ImageFont.truetype('/Library/Fonts/Arial.ttf', 16)
image.info['dpi'] = 100
print( ImageDraw.Draw(image).textsize('Loreum ipsum', font=font) )
image.info['dpi'] = 1000
print( ImageDraw.Draw(image).textsize('Loreum ipsum', font=font) )
将打印
(101, 18)
(101, 18)
我如何获得给定文本的大小以磅为单位?
【问题讨论】:
-
将点数乘以 dpi 因子
-
@WayToDoor,对,Pillow 在这里使用什么 DPI 因子?
-
使用
image.info['dpi']找出来? -
@WayToDoor,新图像将
image.info设置为{};没有 DPI -
这很好,因为图像没有dpi信息。如果您设置了特定的 DPI 系数,那么您可以获得英寸数。如果您不这样做,则无法从图像中获取英寸数,因为这基本上是您在打印图像时设置的设置
标签: python python-3.x image python-imaging-library typography