如何使用 PIL 将透明的 PNG 图像与另一个图像合并?
本文讨论如何将透明 PNG 图像与另一个图像放置在一起。这是对图像非常常见的操作。它有很多不同的应用。例如,在图像上添加水印或徽标。为此,我们使用Python的 PIL 模块。其中我们使用一些内置方法并以看起来像粘贴的方式组合图像。
- 打开函数-用于打开图像。
- 转换函数-它返回给定图像的转换副本。它使用透明蒙版将图像转换为其真实颜色。
- 粘贴函数-用于将图像粘贴到另一个图像上。
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.
方法:
- 使用 Image.open()函数打开正面和背景图像。
- 将两个图像都转换为 RGBA。
- 计算要粘贴图像的位置。
- 使用粘贴函数合并两个图像。
- 保存图像。
输入数据:
为了输入数据,我们使用了两个图像:
- 正面图像:像徽标一样的透明图像
- 背景图像:用于像任何壁纸图像一样的背景
执行:
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")
输出: