Thursday, September 4, 2025
HomeLanguagesHow to merge a transparent PNG image with another image using PIL?

How to merge a transparent PNG image with another image using PIL?

This article discusses how to put a transparent PNG image with another image. This is a very common operation on images. It has a lot of different applications. For example, adding a watermark or logo on an image. To do this, we are using the PIL module in Python. In which we use some inbuilt methods and combine the images in such a way that it looks to be pasted.

  • Open Function – It is used to open an image.
  • Convert Function – It returns a converted copy of a given image. It converts the image to its true color with a transparency mask.
  • Paste Function – It is used to paste an image on another image. 

Syntax: PIL.Image.Image.paste(image_1, image_2, box=None, mask=None)
OR 
image_object.paste(image_2, box=None, mask=None)

Parameters:

  • image_1/image_object : It is the image on which other image is to be pasted.
  • image_2: Source image or pixel value (integer or tuple).
  • box: An optional 4-tuple giving the region to paste into. If a 2-tuple is used instead, it’s treated as the upper left corner. If omitted or None, the source is pasted into the upper left corner.
  • mask: a mask that will be used to paste the image. If you pass an image with transparency, then the alpha channel is used as the mask.

Approach:

  • Open the front and background image using Image.open() function.
  • Convert both the image to RGBA.
  • Calculate the position where you want to paste the image.
  • Use the paste function to merge the two images.
  • Save the image.

Input Data:

To input the data, we are using two images:

  • Front Image: A transparent image like a logo

  • Background image: For background like any wallpaper image

Implementation:

Python3




# import PIL module
from PIL import Image
  
# Front Image
filename = 'front.png'
  
# Back Image
filename1 = 'back.jpg'
  
# Open Front Image
frontImage = Image.open(filename)
  
# Open Background Image
background = Image.open(filename1)
  
# Convert image to RGBA
frontImage = frontImage.convert("RGBA")
  
# Convert image to RGBA
background = background.convert("RGBA")
  
# Calculate width to be at the center
width = (background.width - frontImage.width) // 2
  
# Calculate height to be at the center
height = (background.height - frontImage.height) // 2
  
# Paste the frontImage at (width, height)
background.paste(frontImage, (width, height), frontImage)
  
# Save this image
background.save("new.png", format="png")


Output:

RELATED ARTICLES

Most Popular

Dominic
32261 POSTS0 COMMENTS
Milvus
81 POSTS0 COMMENTS
Nango Kala
6626 POSTS0 COMMENTS
Nicole Veronica
11795 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11855 POSTS0 COMMENTS
Shaida Kate Naidoo
6747 POSTS0 COMMENTS
Ted Musemwa
7023 POSTS0 COMMENTS
Thapelo Manthata
6695 POSTS0 COMMENTS
Umr Jansen
6714 POSTS0 COMMENTS