Seite 1 von 2

Text in PNG Datei

Verfasst: Montag 10. Dezember 2007, 16:25
von BasterTWO
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

Verfasst: Montag 10. Dezember 2007, 17:02
von rafael
Du musst dafür das Bild mit `ImageDraw.open()` öffnen. Siehe Doku.

Also

Verfasst: Montag 10. Dezember 2007, 17:17
von BasterTWO
Also bei mir gibt es diese Funktion nicht mehr !!!

Viele Grüße
BasterTWO

Re: Also

Verfasst: Montag 10. Dezember 2007, 17:29
von rafael
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.

Habe ich

Verfasst: Dienstag 11. Dezember 2007, 18:57
von BasterTWO
Ich habe die Module schon impotiert nur habe ich die import-Anweisungen weggelassen.

BasterTWO

Kann

Verfasst: Mittwoch 12. Dezember 2007, 19:00
von BasterTWO
Kann mir wirklich keiner weiter helfen.

Viele Grüße
BasterTWO

Verfasst: Donnerstag 13. Dezember 2007, 00:35
von Tayce
was funktioniert denn noch nicht?

zeig doch mal bitte deinen kompletten code her (mit importanweißungen usw...)

Verfasst: Donnerstag 13. Dezember 2007, 00:53
von Tayce
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")

Tach

Verfasst: Donnerstag 13. Dezember 2007, 17:56
von BasterTWO
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

Verfasst: Donnerstag 13. Dezember 2007, 18:06
von BlackJack
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`.

Verfasst: Donnerstag 13. Dezember 2007, 18:50
von gerold
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
:-)

Echt

Verfasst: Donnerstag 13. Dezember 2007, 21:58
von BasterTWO
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

Verfasst: Freitag 14. Dezember 2007, 00:11
von Tayce
also bei mir gehts auch mit leerzeichen... vlt hast du ne alte version von pil?

Welche Version

Verfasst: Freitag 14. Dezember 2007, 16:13
von BasterTWO
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

Verfasst: Freitag 14. Dezember 2007, 16:45
von Tayce
Pil Version = 1.1.6-2 (-2 fuer 2 aenderungen von archlinux)
freetype2 Version = 2.3.5-1

Also

Verfasst: Freitag 14. Dezember 2007, 17:19
von BasterTWO
Ok da haben wir den Fehler ich habe:

freetype2 Version = 2.2.1-5

Kann irgendwo das Paktet mir einer neueren Version downloaden oder wo gibt es den Source.

Viele Grüße
BasterTWO

Re: Also

Verfasst: Freitag 14. Dezember 2007, 17:46
von lunar
BasterTWO hat geschrieben:Kann irgendwo das Paktet mir einer neueren Version downloaden
Eventuell mal die Debian Backports durchstöbern...
oder wo gibt es den Source.
http://www.google.de

Help

Verfasst: Sonntag 16. Dezember 2007, 16:14
von BasterTWO
Tach,
könnte mir jemand erklären wie ich ambesten die libfreetyps packete aus dem testing installiere, da ich mir letztes mal mein System zerschossen habe.

Viele Grüße
BasterTWO

Verfasst: Sonntag 16. Dezember 2007, 18:40
von Leonidas
Du hast Debian stable und willst Pakete aus testing installieren? Wenn ja, dann hast du wohl alle Warnungen großzügig übersehen, hmm? Denn das ist nicht so möglich und Testing mit Stable zu mischen ist keine gute Idee.

Daher: Entweder Testing nutzen oder Backports, etwa von backports.org. Wenn es dort keine gibt, dann kannst du deine eigenen Backports basteln, jedoch muss ich dich warnen - einen Backport zu bauen, der nicht alles kaputt macht ist gar nicht so einfach. Man muss auf jeden Fall den Debian Maint-Guide gelesen haben und die Anweisungen von backports.org befolgen. Und auch dann kann der Backport nicht funktionieren, weil er eine andere API hat und andere Programme in deiner Distribution nicht mehr funktionieren.

Color in Weiß

Verfasst: Montag 17. Dezember 2007, 17:55
von BasterTWO
Hallo,
ich habe noch eine abschliesende Frage, wie kann man die Schriftfarbe auf Weiß ändern ???

PS: Mein Server Anbieter hat mir die neue Version installiert.

Viele Grüße
BasterTWO