Seite 1 von 1

PIL Bild Zusammenfügen

Verfasst: Sonntag 21. März 2010, 15:25
von luxor
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

Verfasst: Sonntag 21. März 2010, 16:00
von tjuXx
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

Re: PIL Bild Zusammenfügen

Verfasst: Sonntag 21. März 2010, 16:02
von /me
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.

Verfasst: Sonntag 21. März 2010, 16:41
von luxor
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!

Verfasst: Sonntag 21. März 2010, 17:00
von b.esser-wisser
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