
Über Tipps würde ich mich natürlich freuen =)
Code: Alles auswählen
import Image, ImageFont, ImageDraw
def textbox(img_obj,top,left,right,font,color,text,halign="center"):
from math import floor
image = ImageDraw.Draw(img_obj)
maxWidth = right - left
words = text.split()
line = ''
lines = []
while len(words) > 0:
line_width,line_height = image.textsize('%s %s' % (line,words[0]), font)
if line_width > maxWidth:
lines.append(line)
line = ''
line = '%s %s' % (line,words[0])
del words[0]
if line:
lines.append(line)
height_total = len(lines) * line_height
i = 0
for line in lines:
if halign == "center":
line_width,line_height = image.textsize(line, font)
center = floor(maxWidth/2 + left)
leftStart = center-line_width/2
elif halign == "right":
line_width,line_height = image.textsize(line, font)
leftStart = left+maxWidth-line_width
else:
leftStart = left
image.text((leftStart, top + line_height * i), line, font=font, fill=color )
i += 1
return img_obj
img_obj = Image.open('/bild.jpg')
font_obj = ImageFont.truetype('/fonts/verdana.ttf', 11, encoding="unic")
text = "PIL Textfeld mit halign PIL Textfeld mit halign PIL Textfeld mit halign PIL Textfeld mit halign "
image = textbox(img_obj,10,10,230,font_obj,"#FFFFFF",text)
image.save('/test.jpg', "JPEG", quality=100, optimize=1 )