Text in PNG Datei

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
BasterTWO
User
Beiträge: 75
Registriert: Donnerstag 25. Oktober 2007, 20:03

Text in PNG Datei

Beitragvon BasterTWO » Montag 10. Dezember 2007, 16:25

Hallo Pythonfreunde,
ich würde gerne ein PNG Bild mit zusätzlichen Text versehen. Dazu habe ich mir folgenden Code zusammen gebastelt.

Code: Alles auswählen

username = 'Jarus'
server = 'Teamspeak Lab'

im = Image.open("/home/ts2/ts2-teamspeaklab/files/usersignatur-afk.png")
draw = ImageDraw.Draw(im)
font = ImageFont.truetype("/home/ts2/ts2-teamspeaklab/files/visitor1.ttf", 10)
draw.text((82, 0), username, font=font)
draw.text((82, 10), server, font=font)
im.save('/home/ts2/ts2-teamspeaklab/files/usersignatur-afk-test.png')


Leider bekomme ich beim zweiten draw.text(...) einen Fehler:

Traceback (most recent call last):
File "mysql2usersignatur.py", line 41, in <module>
draw.text((82, 10), server, font=font)
File "/usr/lib/python2.5/site-packages/PIL/ImageDraw.py", line 263, in text
mask, offset = font.getmask2(text, self.fontmode)
File "/usr/lib/python2.5/site-packages/PIL/ImageFont.py", line 138, in getmask2
self.font.render(text, im.id, mode=="1")
IOError: invalid argument


Wie kann ich nun mehrer Texte/Variable in das PNG Bild einfügen.

Viele Grüße
BasterTWO
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Beitragvon rafael » Montag 10. Dezember 2007, 17:02

Du musst dafür das Bild mit `ImageDraw.open()` öffnen. Siehe Doku.
Benutzeravatar
BasterTWO
User
Beiträge: 75
Registriert: Donnerstag 25. Oktober 2007, 20:03

Also

Beitragvon BasterTWO » Montag 10. Dezember 2007, 17:17

Also bei mir gibt es diese Funktion nicht mehr !!!

Viele Grüße
BasterTWO
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Re: Also

Beitragvon rafael » Montag 10. Dezember 2007, 17:29

BasterTWO hat geschrieben:Also bei mir gibt es diese Funktion nicht mehr !!!


Dafür musst du ja auch zuerst das Modul `ImageDraw` mit "import ImageDraw" importieren und eine Schrift mithilfe des Modules `ImageFont` erstellen.
Schau dir einfach das Beispiel in der Doku an.
Benutzeravatar
BasterTWO
User
Beiträge: 75
Registriert: Donnerstag 25. Oktober 2007, 20:03

Habe ich

Beitragvon BasterTWO » Dienstag 11. Dezember 2007, 18:57

Ich habe die Module schon impotiert nur habe ich die import-Anweisungen weggelassen.

BasterTWO
Benutzeravatar
BasterTWO
User
Beiträge: 75
Registriert: Donnerstag 25. Oktober 2007, 20:03

Kann

Beitragvon BasterTWO » Mittwoch 12. Dezember 2007, 19:00

Kann mir wirklich keiner weiter helfen.

Viele Grüße
BasterTWO
Tayce
User
Beiträge: 56
Registriert: Sonntag 22. April 2007, 18:26
Wohnort: München
Kontaktdaten:

Beitragvon Tayce » Donnerstag 13. Dezember 2007, 00:35

was funktioniert denn noch nicht?

zeig doch mal bitte deinen kompletten code her (mit importanweißungen usw...)
Tayce
User
Beiträge: 56
Registriert: Sonntag 22. April 2007, 18:26
Wohnort: München
Kontaktdaten:

Beitragvon Tayce » Donnerstag 13. Dezember 2007, 00:53

Okay ich hab mir mal die Doku angeschaut und habs auch geschafft.
Hier mal der Code:

Code: Alles auswählen

#!/usr/bin/env python
import ImageDraw
import ImageFont
import Image
im = Image.open("test.png")
Draw = ImageDraw.Draw(im)
font = ImageFont.truetype("/usr/share/fonts/TTF/arial.ttf", 15)
Draw.text((10,10), "hello", font=font, fill="black") #fill="black" für eine schwarze schrift. Standart ist Weiß
im.save("test.png")
Benutzeravatar
BasterTWO
User
Beiträge: 75
Registriert: Donnerstag 25. Oktober 2007, 20:03

Tach

Beitragvon BasterTWO » Donnerstag 13. Dezember 2007, 17:56

Danke Taye das du mir noch zeigen konntest wie man die Farbe ändert (wäre meine negste Frage gewesen), aber ich habe es schon geschaft ja Text zu schrieben leider nur einmal. Ich würde aber gerne mehrer Texte rein schreiben.

Viele Grüße
BasterTWO
BlackJack

Beitragvon BlackJack » Donnerstag 13. Dezember 2007, 18:06

Nur mal so ins Blaue: Macht es einen Unterschied ob Leerzeichen im Text sind? Ich glaube da gab's mal ein Problem mit der `libfreetype`.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Donnerstag 13. Dezember 2007, 18:50

Hallo!

So etwas kann wxPython auch. 8)

Code: Alles auswählen

import wx

app = wx.PySimpleApp()

my_bitmap = wx.Bitmap("wolken.png")

dc = wx.MemoryDC(my_bitmap)
gc = wx.GraphicsContext_Create(dc)

font = wx.Font(
    12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, face = "Arial"
)
gc.SetFont(font)

gc.DrawText("Hallo", 10, 10)
gc.DrawText("Welt", 10, 30)

dc.SelectObject(wx.NullBitmap)
my_bitmap.SaveFile("wolken_new.png", wx.BITMAP_TYPE_PNG)

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
BasterTWO
User
Beiträge: 75
Registriert: Donnerstag 25. Oktober 2007, 20:03

Echt

Beitragvon BasterTWO » Donnerstag 13. Dezember 2007, 21:58

Das ist ja mal der Hammer das ganze ging nur wegen einem Leerzeichen nicht. :D

Leider bin ich darauf angewiesen Leerzeichen verarbeiten zu können. Kann man das irgendwie hinbekommen ???

@gerold: Ich würde gerne lieber PIL benutzen.

Viele Grüße
BasterTWO
Tayce
User
Beiträge: 56
Registriert: Sonntag 22. April 2007, 18:26
Wohnort: München
Kontaktdaten:

Beitragvon Tayce » Freitag 14. Dezember 2007, 00:11

also bei mir gehts auch mit leerzeichen... vlt hast du ne alte version von pil?
Benutzeravatar
BasterTWO
User
Beiträge: 75
Registriert: Donnerstag 25. Oktober 2007, 20:03

Welche Version

Beitragvon BasterTWO » Freitag 14. Dezember 2007, 16:13

Also ich habe meine von http://www.pythonware.com/products/pil/. Davon die Version 1.1.6 als Source für Debian.

Welche Version verwendest du oder meinst du die Version von dieser FreeFont Lib, da habe ich die von denn Debian Paketen.

Viele Grüße
BasterTWO
Tayce
User
Beiträge: 56
Registriert: Sonntag 22. April 2007, 18:26
Wohnort: München
Kontaktdaten:

Beitragvon Tayce » Freitag 14. Dezember 2007, 16:45

Pil Version = 1.1.6-2 (-2 fuer 2 aenderungen von archlinux)
freetype2 Version = 2.3.5-1

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]