이미지 하단에 텍스트를 추가하려고했지만 사실은 텍스트를 추가하려고했지만 이미지의 너비가 더 길면 이미지 너비가 양쪽에서 잘려 단순화됩니다. 텍스트 폭이 이미지 너비보다 길면 텍스트가 여러 줄로 표시됩니다. 각 최대 width
자, 당신은 문자열 목록에 text
을 깰 textwrap.wrap
를 사용할 수파이썬 PIL은 이미지에 여러 줄의 텍스트를 그립니다.
FOREGROUND = (255, 255, 255)
WIDTH = 375
HEIGHT = 50
TEXT = 'Chyba najwyższy czas zadać to pytanie na śniadanie \n Chyba najwyższy czas zadać to pytanie na śniadanie'
font_path = '/Library/Fonts/Arial.ttf'
font = ImageFont.truetype(font_path, 14, encoding='unic')
text = TEXT.decode('utf-8')
(width, height) = font.getsize(text)
x = Image.open('media/converty/image.png')
y = ImageOps.expand(x,border=2,fill='white')
y = ImageOps.expand(y,border=30,fill='black')
w, h = y.size
bg = Image.new('RGBA', (w, 1000), "#000000")
W, H = bg.size
xo, yo = (W-w)/2, (H-h)/2
bg.paste(y, (xo, 0, xo+w, h))
draw = ImageDraw.Draw(bg)
draw.text(((w - width)/2, w), text, font=font, fill=FOREGROUND)
bg.show()
bg.save('media/converty/test.png')
덕분에 많은 :
여기에 제대로 문제를 해결하는 간단한 라이브러리이다! 그냥 복사하여 붙이면 매력처럼 작동합니다. 당신은 최고입니다 :) – user985541
'40'은 무엇을 나타 냅니까? – User
@ 사용자 '40'은 최대 문자를 나타냅니다. 그것이 새로운 줄로 감싸기 전에 최대 또는 40자를 허용한다는 것을 의미합니다. 그러나 한 단어가 10 자이고 그 다음이 31 일 경우 첫 번째 단어 바로 다음에 줄이 바뀝니다. 첫 번째 단어와 두 번째 단어가 맞지 않을 수 있기 때문입니다. – teewuane