как работает команда Image.ImageFont.ImageFont.getsize ()? - PullRequest
0 голосов
/ 14 апреля 2019

Мне нужно использовать эту команду для выбора текста с наибольшим размером шрифта, но после бесчисленных попыток ничего не получается

Я пробовал: Image.ImageFont.ImageFont.getsize(text) {текст - это переменная для текста, который он просматривает}

[ОШИБКА]: TypeError: getsize () отсутствует 1 обязательный позиционный аргумент: 'текст'

Image.ImageFont.ImageFont.getsize(text = 'Lorem Ipsum')

[ОШИБКА]: TypeError: getsize () отсутствует 1 обязательный позиционный аргумент: 'self'

Image.ImageFont.ImageFont.getsize(self, text = 'Lorem Ipsum')

[ERROR]: NameError: имя 'self' не определено

Я не совсем понимаю, что я должен делать / иметь в виду.

Примечание. Если предполагается, что код просматривает текст и находит самый большой размер шрифта, зачем мне выбирать слово, размер шрифта которого он должен определить, если он не делает этого для всего отрывка?

Вот мой код целиком:

from PIL import Image, ImageFont

image = Image.open('screenshot - copy.bmp') 

fontget = ImageFont.ImageFont.getsize(text = 'food')
print(fontget)

Я хочу, чтобы он сканировал проход и возвращал шрифты разных размеров.Оттуда я заставлю его печатать текст с самым большим размером шрифта.

1 Ответ

0 голосов
/ 23 апреля 2019
[ERROR]: TypeError: getsize() missing 1 required positional argument: 'text'

Предыдущая ошибка означает, что вы вызвали метод экземпляра для класса, а не экземпляр класса. Вы должны создать экземпляр класса ImageFont, сначала загрузив шрифт.

>>> from PIL import ImageFont
>>> font = ImageFont.load_default()
>>> font.getsize('hello world')
(66, 11)

Примечание. Если предполагается, что код просматривает текст и находит самый большой размер шрифта, почему я должен выбрать слово, размер шрифта которого он должен определить, разве он не должен делать это для всего отрывка?

Это не то, что делает getsize(). Возвращает размер текста, который PIL.ImageDraw.Draw.text() будет рисовать выбранным шрифтом.

>>> font.getsize('h')
(6, 11)
>>> font.getsize('hello')
(30, 11)
>>> font.getsize('hello hello this is long text and you can see x gets bigger because the text gets wider')
(522, 11)
...