我试图在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或每英寸点数。
例如,在100 DPI设备上,12个像素看起来是12/100或0.12英寸长。要将英寸转换为点数,请将它们乘以72.所以12像素→0.12英寸* 72→8.84点。