Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you composite an image onto another image with PIL in Python?

I need to take an image and place it onto a new, generated white background in order for it to be converted into a downloadable desktop wallpaper. So the process would go:

  1. Generate new, all white image with 1440x900 dimensions
  2. Place existing image on top, centered
  3. Save as single image

In PIL, I see the ImageDraw object, but nothing indicates it can draw existing image data onto another image. Suggestions or links anyone can recommend?

like image 982
Sebastian Avatar asked Apr 01 '10 21:04

Sebastian


People also ask

How do you overlay an image on another image in Python?

Firstly we opened the primary image and saved its image object into variable img1. Then we opened the image that would be used as an overlay and saved its image object into variable img2. Then we called the paste method to overlay/paste the passed image on img1.

How do I mask an image in PIL?

You can use the PIL library to mask the images. Add in the alpha parameter to img2, As you can't just paste this image over img1. Otherwise, you won't see what is underneath, you need to add an alpha value.


1 Answers

This can be accomplished with an Image instance's paste method:

from PIL import Image img = Image.open('/path/to/file', 'r') img_w, img_h = img.size background = Image.new('RGBA', (1440, 900), (255, 255, 255, 255)) bg_w, bg_h = background.size offset = ((bg_w - img_w) // 2, (bg_h - img_h) // 2) background.paste(img, offset) background.save('out.png') 

This and many other PIL tricks can be picked up at Nadia Alramli's PIL Tutorial

like image 92
unutbu Avatar answered Sep 21 '22 12:09

unutbu