मैं छवि के नीचे पाठ जोड़ने की कोशिश करता हूं और वास्तव में मैंने इसे किया है, लेकिन मेरे पाठ के लंबे समय के मामले में छवि चौड़ाई यह दोनों पक्षों से कट जाती है, सरल बनाने के लिए पाठ की तरह कई पंक्तियों में होना चाहिए यदि यह छवि चौड़ाई से अधिक लंबा है। प्रत्येक ज्यादा से ज्यादा width
वर्ण लंबा आप textwrap.wrap
इस्तेमाल कर सकते हैं स्ट्रिंग की एक सूची में text
तोड़ने के लिएपायथन पीआईएल छवि पर मल्टीलाइन टेक्स्ट खींचें
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
@User '40' अधिकतम वर्णों का प्रतिनिधित्व करता है। इसका अर्थ यह है कि यह एक नई लाइन पर लपेटने से पहले अधिकतम या 40 वर्णों की अनुमति देगा। लेकिन अगर एक शब्द 10 अक्षर है और फिर अगला 31 है, तो यह पहले शब्द के बाद सही होगा क्योंकि यह लाइन पर पहले और दूसरे शब्द को फिट नहीं कर सकता है। – teewuane