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
PIL Bild Zusammenfügen
- 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
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
Womit hast du denn konkret die Probleme?luxor hat geschrieben:Ich möchte diese drei Bilder nun neben ein anderer Zusammenfügen.
Also BildABildBBildC mit der Auflösung 300Bx100H Pixel.
In der PIL Dokumentation findet man ja recht gut wie man ein neues Bild erstellt und auch die paste-Methode ist ordentlich erklärt.
Also ich habe nun ein kleines Script (erst mal mit 2 Bilder)
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:
Das ist nun mein Problem
Problem gelöst.
Mit
im.paste(bilda, (0,0))
im.paste(bildb, (640,0))
Klappt es.
Danke euch!
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")
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
Problem gelöst.
Mit
im.paste(bilda, (0,0))
im.paste(bildb, (640,0))
Klappt es.
Danke euch!
- b.esser-wisser
- User
- Beiträge: 272
- Registriert: Freitag 20. Februar 2009, 14:21
- Wohnort: Bundeshauptstadt B.
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.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.
hth, Jörg
Wir haben schon 10% vom 21. Jahrhundert hinter uns!