简体   繁体   中英

Why does PIL fail to merge 2 images in my code?

I am trying to combine 2 images into a larger one with Image.paste function. I start by creating an image that can hold both images, and then paste in the 2 images:

wrapper = Image.new("I", (width, height+textHeight));

if placement=="bottom":
 wrapper.paste(img1); 
 wrapper.paste(textImage, (0, height, width, textHeight));
else:
 wrapper.paste(textImage);
 wrapper.paste(img1, (0,textHeight));

Then I get this error every time:

 File "C:\Python27\lib\site-packages\PIL\Image.py", line 1127, in paste
    self.im.paste(im, box)
ValueError: images do not match

I am very sure that the sizes of the images are correct, and the wrapper image can hold both images. The only way to avoid this error is to make the 3 images (wrapper and 2 components) same size, and paste from (0,0).

I am at my wits' end, please help!

There are two possible issues.

  1. Are you sure your 4-tuple (0, height, width, textHeight) is correct? It should be (left, upper, right, lower) pixel coordinates. In this case the pasted image must match the size of the region, and I think this is where your error lies. Alternatively you can give a 2-tuple giving just the upper left corner of where you want to paste the picture. See: http://effbot.org/imagingbook/image.htm

  2. Are you sure that height, width, textHeight are ints and not floats ?

You could try something like this:

x, y = img1.size
wrapper.paste(textImage,(0,height,x,y))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM