@Guerro69

Pillow, как пропорционально подобрать размер текста?

Я написал код для обработки изображений, но помимо этого, я ещё сделал так, чтобы внизу обработанной картинки писалася мой вк, чтобы любой человек знал, кто я.. проблема состоит в том, что если человек захочет обработать картинку меньше 250x250 то эта подпись писалась крупными буквами на всю картинку, что вполне логично, я пытался придумать формулу для того чтобы подобрать пропорциональный размер текста к фотографии, но вышло не особо.
Вот мой код:
from PIL import Image, ImageDraw, ImageFont

image = Image.open("images\\ans_2.png")
draw = ImageDraw.Draw(image)
width = image.size[0]
height = image.size[1]

def painting():
	size = 30
	font = ImageFont.truetype('images\\guer.ttf', size=size)
	text = 'vk.com/мой_вк'
	x = width - 100
	x -= size/2 * len(list(text))/2
	draw.text((x, height-50), text, (255,255,255), font)

painting()
image.save("images\\new.png")
del draw
  • Вопрос задан
  • 292 просмотра
Решения вопроса 2
Viktor_T2
@Viktor_T2
python developer
Размер фонта пропорционально высоте картинки:
size = int(height / k)
k - эмпирический коэффицент
Ответ написан
@Guerro69 Автор вопроса
Всё таки удалось хоть и не идеально что то придумать, но это работает и текст более менее правильно ложится на большие картинки и на маленькие
size = 30
if width > 1000:
	size = 50
elif width <= 400:
	size = 20
text = 'vk.com/мой_вк'
y = int(height - (size*1.67))
x = int((width - (size*3.34)) - (size/2) * (len(list(text))/2))
font = ImageFont.truetype(PATHS[0], size=size)
color = (255,255,255)
draw.text((x, y), text, color, font)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы