2015-02-09 20 views
8

Ho un abbastanza semplice file di codice:Come incollare un'immagine su un'immagine più grande usando il Cuscino?

from PIL import Image 
til = Image.new("RGB",(50,50)) 
im = Image.open("tile.png") #25x25 
til.paste(im) 
til.paste(im,(23,0)) 
til.paste(im,(0,23)) 
til.paste(im,(23,23)) 
til.save("testtiles.png") 

Tuttavia, quando si tenta di eseguirlo, ottengo il seguente errore:

Traceback (most recent call last): 
    til.paste(im) 
    File "C:\Python27\lib\site-packages\PIL\Image.py", line 1340, in paste 
    self.im.paste(im, box) 
ValueError: images do not match 

che cosa sta causando questo errore? Sono entrambe immagini RGB, i documenti non dicono nulla su questo errore.

+0

Di solito quando le modalità delle 2 immagini non corrispondono. – runDOSrun

risposta

13

Il problema è nel primo incollaggio - in base alla documentazione del PIL (http://effbot.org/imagingbook/image.htm), se non viene passato alcun argomento "casella", le dimensioni delle immagini devono corrispondere.

EDIT: Ho effettivamente frainteso la documentazione, hai ragione, non è lì. Ma da quello che ho provato qui, sembra che non ci sia un secondo argomento, le dimensioni devono corrispondere. Se si desidera mantenere le dimensioni della seconda immagine e posizionarla nell'angolo in alto a sinistra della prima immagine, eseguire:

... 
til.paste(im,(0,0)) 
... 
+1

In realtà sto usando Pillow, un fork PIL: http://pillow.readthedocs.org/ Tuttavia, questa è la soluzione. Grazie! – user1796160

Problemi correlati