Gibt es die Möglichkeit mit der Funktion draw.text aus der Python Image Library den Text auch senkrecht darzustellen?
Unter senkrecht verstehe ich, dass man den Text nicht untereinander schreibt. Sondern das der ganze Text einfach um 90° von der X-Achse aus gedreht wird.
Das ImageDraw Modul unterstützt die Funktion draw.text, sie ist wie folgt definiert:
draw.text(postition, string, options)
options: fill und font
Mein momentanes Beispielsscript setzt einfach die Buchstaben untereinander, aber leider dreht es das Textfeld nicht.
Code: Alles auswählen
#!/usr/bin/python2.4 -w
import Image, ImageDraw, ImageFont
def drawImage(filename):
background = '#FFFFFF'
black = '#000000'
width = 200
height = 200
# PIL create an empty image and draw object to draw on
# memory only, not visible
image = Image.new("RGB", (width, height), background)
draw = ImageDraw.Draw(image)
# use a truetype font
font_path = "/usr/share/fonts/truetype/"
sans18 = ImageFont.truetype (font_path+'DejaVuSans-Bold.ttf', 18)
arial12 = ImageFont.truetype (font_path+'arial.ttf', 12)
# print header
draw.text((20, 20), "text string", font=sans18, fill=black)
# extra function needed to draw text vertical
x = 20
y = 50
spacing = 10
text = "text string"
font = arial12
fill_color = black
draw = verdraw(draw,x,y,spacing,text,font,fill_color)
# PIL image can be saved as .png .jpg .gif or .bmp file
image.save(filename+'.jpg')
def verdraw(draw,width,height,spacing,text,fon,color):
for i in range(0,len(text)):
draw.text((width,height),text[i], font=fon, fill=color)
height+=spacing
return draw
if __name__ == '__main__':
drawImage("test")
...oder sollte ich zu einer anderen Library als PIL greifen?
Viele Grüße aus Mainz!