PIL Bild Zusammenfügen

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.
Antworten
luxor
User
Beiträge: 2
Registriert: Sonntag 21. März 2010, 15:16

Hallo Zusammen,
ich bin recht neu in der Python Welt und stehe nun vor einem kleinen Problem wo mir Google und die Forums suche leider nicht helfen konnte.

Ich habe 3 Bilder

BildA 100Bx100H Pixel
BildB 100Bx100H Pixel
BildC 100Bx100H Pixel

Ich möchte diese drei Bilder nun neben ein anderer Zusammenfügen.
Also BildABildBBildC mit der Auflösung 300Bx100H Pixel.

Das ist doch sicher möglich oder?
Luxor
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

ja das geht sicher.
versuche es mal so:
- neues Bild erstellen(in entsprechender Größe)
- dann die Bilder an der gewünschten stelle einfügen: im.paste(image, box)

http://www.pythonware.com/library/pil/h ... /image.htm
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

luxor hat geschrieben:Ich möchte diese drei Bilder nun neben ein anderer Zusammenfügen.
Also BildABildBBildC mit der Auflösung 300Bx100H Pixel.
Womit hast du denn konkret die Probleme?

In der PIL Dokumentation findet man ja recht gut wie man ein neues Bild erstellt und auch die paste-Methode ist ordentlich erklärt.
luxor
User
Beiträge: 2
Registriert: Sonntag 21. März 2010, 15:16

Also ich habe nun ein kleines Script (erst mal mit 2 Bilder)

Code: Alles auswählen


from PIL import Image
imageWidth=1280
imageHeight=480

im = Image.new("RGB", (imageWidth, imageHeight))

bilda = Image.open("1.jpg")
bildb = Image.open("2.jpg")


im.paste(bilda, (0,0,640,480))
im.paste(bildb, (0,0,640,480))
im.save("/var/www/test.jpg", "JPEG")
Wenn ich das nun mache klappt das wunderbar.
Aber noch sind ja beide Bilder an der gleichen Position und man kann nur eins sehen.
Sobald ich nun das im.paste(bildb, (0,0,640,480)) auf im.paste(bildb, (640,0,640,480)) ändere damit die Bilder neben ein andere sind bekomme ich:

Code: Alles auswählen

Traceback (most recent call last):
  File "test.py", line 14, in <module>
    im.paste(bildb, (640,0,640,480))
  File "/usr/lib/python2.6/dist-packages/PIL/Image.py", line 1103, in paste
    self.im.paste(im, box)
ValueError: images do not match
Das ist nun mein Problem

Problem gelöst.
Mit

im.paste(bilda, (0,0))
im.paste(bildb, (640,0))

Klappt es.
Danke euch!
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

PIL docs hat geschrieben:Pastes another image into this image. The box argument is either a 2-tuple giving the upper left corner, a 4-tuple defining the left, upper, right, and lower pixel coordinate, or None (same as (0, 0)). If a 4-tuple is given, the size of the pasted image must match the size of the region.
Der Parameter "box" besteht nicht aus (x, y, breite, höhe) sondern (x, y, x+breite, y+höhe), gezählt (wie bei Bildschirmen üblich) von oben links.

hth, Jörg
Wir haben schon 10% vom 21. Jahrhundert hinter uns!
Antworten