Я использую PIL для рисования текста на изображении. Как мне обернуть строку текста. Вот мой код:
text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
image = Image.open("/tmp/background-image.jpg")
draw = ImageDraw.Draw(image)
font = ImageFont.truetype("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf"), 50, encoding='unic')
draw.text((100, 100), text, font=font, fill="#aa0000")
image.save("/tmp/image.jpg")
Используйте перенос текста. Это работает, не нарушая обещания.
import textwrap
from PIL import *
caption = "Obama warns far-left candidates says average American does not want to tear down the system"
wrapper = textwrap.TextWrapper(width=50)
word_list = wrapper.wrap(text=caption)
caption_new = ''
for ii in word_list[:-1]:
caption_new = caption_new + ii + '\n'
caption_new += word_list[-1]
image = Image.open('obama.jpg')
draw = ImageDraw.Draw(image)
# Download the Font and Replace the font with the font file.
font = ImageFont.truetype(text_font, size=font_size)
w,h = draw.textsize(caption_new, font=font)
W,H = image.size
x,y = 0.5*(W-w),0.90*H-h
image.save('output.png')
Выходное Изображение