Какова неявная плотность пикселей изображения Python Pillow при рисовании текста? - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь найти размер, в пунктах , некоторого текста, используя Pillow в python.Насколько я понимаю, размеры шрифта в точках соответствуют реальным физическим дюймам на целевом дисплее или поверхности, с 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)

Как получить размер в точках данного текста?

1 Ответ

0 голосов
/ 12 марта 2019

Изображения не имеют «неявной» плотности пикселей, они просто имеют разное количество пикселей.Размер всего, что измеряется в пикселях, будет зависеть от DPI устройства дисплея или точек на дюйм.

Например, на устройстве с разрешением 100 DPI 12 пикселей будут иметь длину 12 / 100 или 0,12 дюйма.Чтобы преобразовать дюймы в точки, умножьте их на 72. Таким образом, 12 пикселей → 0,12 дюйма * 72 → 8,84 точки.

...