У меня есть изображение и строка, и я хочу выровнять текст по центру изображения и изменить его размер в соответствии с масштабом изображения. Я пытался это сделать, но не смог:
txt = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod"
fontsize = 1 # starting font size
para = textwrap.wrap(txt, width=15)
im = Image.open('bg.jpeg')
MAX_W, MAX_H = im.size
draw = ImageDraw.Draw(im)
font = ImageFont.truetype("arial.ttf", fontsize)
# portion of image width you want text width to be
img_fraction = MAX_H / 1000
font = ImageFont.truetype("arial.ttf", fontsize)
breakpoint = img_fraction * im.size[0]
jumpsize = 75
while True:
if font.getsize(txt)[0] < breakpoint:
fontsize += jumpsize
else:
jumpsize = jumpsize // 2
fontsize -= jumpsize
font = ImageFont.truetype("arial.ttf", fontsize)
if jumpsize <= 1:
break
# optionally de-increment to be sure it is less than criteria
current_h, pad = MAX_W / 8, 10
for line in para:
w, h = draw.textsize(line, font=font)
draw.text(((MAX_W - w) / 2, current_h), line, font=font)
current_h += h + pad
im.save('test.png')
os.remove('bg.jpeg')
Попробуйте эту функцию, чтобы обрезать пробелы
def trim(im):
bg = Image.new(im.mode, im.size, im.getpixel((0, 0)))
diff = ImageChops.difference(im, bg)
diff = ImageChops.add(diff, diff, 2.0, -100)
bbox = diff.getbbox()
if bbox:
return im.crop(bbox)
Изменение размера изображения
img=img.resize((yourwidth,yourheight),Image.ANTIALIAS))
если уменьшить размер шрифта текста проблема решится
это не то, что не так, я не могу правильно масштабировать шрифт до размера шрифта
Вы пробовали? Это работает хорошо, даже мне помогает
@MaxDev Да Если вы обрежете изображение, размер шрифта будет автоматически выровнен
хорошо, попробую, но я не знаю, как это реализовать
я не очень хорошо разбираюсь в питоне
Просто используйте эту функцию, например, обрезку (imageobj)
это только обрезает изображение, что я хочу сделать, это масштабировать текст до размера изображения
ты имеешь в виду изменить размер?
да, я сгенерировал текст и выровнял его посередине, но я не могу его правильно масштабировать
проверить функцию изменения размера, я обновил свое решение
не изображение, а расширение, я хочу масштабировать текст по изображению
не могли бы вы поделиться снимком экрана и кодом?
сгенерированное изображение i.imgur.com/7n5mOsS.jpg
текст вылетает из картинки
шрифт file.io/kxgWShvAwFYG
проблема в ширине..
Фактическая задача состоит в том, чтобы написать текст внутри изображения rgt?
Так что если вы уменьшите размер шрифта текста, проблема будет решена.
Все вопросы решены?
В чем проблема/ошибка?