如何用PIL将一个透明的PNG图像与另一个图像合并
这篇文章讨论了如何把一个透明的PNG图像与另一个图像放在一起。这是对图像的一个非常常见的操作。它有很多不同的应用。例如,在一个图像上添加水印或标志。要做到这一点,我们要使用Python中的PIL模块。在这个模块中,我们使用一些内置的方法,以这样的方式组合图像,使其看起来像被粘贴的。
- 打开功能 – 它用于打开一个图像。
- 转换函数 – 它返回一个给定图像的转换副本。它将图像转换为带有透明度遮罩的真实颜色。
- 粘贴功能 – 它用于将一个图像粘贴到另一个图像上。
语法:
PIL.Image.Image.paste(image_1, image_2, box=None, mask=None)
或者
image_object.paste(image_2, box=None, mask=None)
参数:
- image_1/image_object : 它是要粘贴其他图像的图像。
- image_2:源图像或像素值(整数或元组)。
- box:一个可选的4元组,给出要粘贴的区域。如果用一个2元组代替,它将被视为左上角。如果省略或没有,源文件将被粘贴到左上角。
- mask:将用于粘贴图像的掩码。如果你传递的是一个具有透明度的图像,那么alpha通道将被用作掩码。
步骤:
- 使用Image.open()函数打开正面和背景图像。
- 将这两幅图像转换为RGBA。
- 计算出你要粘贴图片的位置。
- 使用粘贴功能,将两张图片合并。
- 保存图像。
输入数据:
为了输入数据,我们使用两张图片。
- 正面图像。一个透明的图像,像一个标志
- 背景图像。对于像任何墙纸图像的背景
实现:
# 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")
输出: