详解在Python中把一个图像叠加在另一个图像上

  • Post category:Python

在Python中,可以使用Pillow模块对图像进行处理。对于把一个图像叠加在另一个图像上,可以采用以下步骤:

  1. 导入Pillow模块
from PIL import Image
  1. 打开需要叠加的背景图和需要叠加的前景图
background = Image.open('background.jpg')
foreground = Image.open('foreground.png')
  1. 把前景图调整到与背景图大小一致
foreground = foreground.resize(background.size)
  1. 把前景图叠加在背景图上
alpha = foreground.split()[3]
background.paste(foreground, mask=alpha)
  1. 保存合成后的图像
background.save('result.jpg')

接下来是两个示例:

示例1:把一张小图像叠加在一张大图像的左上角

from PIL import Image

# 打开背景图和前景图
background = Image.open('background.jpg')
foreground = Image.open('foreground.png')

# 把前景图调整到与背景图大小一致
foreground = foreground.resize(background.size)

# 把前景图叠加在背景图上
alpha = foreground.split()[3]
background.paste(foreground, (0, 0), mask=alpha)

# 保存合成后的图像
background.save('result.jpg')

示例2:把一张小图像叠加在一张大图像的正中间

from PIL import Image

# 打开背景图和前景图
background = Image.open('background.jpg')
foreground = Image.open('foreground.png')

# 计算需要把前景图放在背景图的正中间的位置
offset_x = (background.width - foreground.width) // 2
offset_y = (background.height - foreground.height) // 2

# 把前景图调整到与背景图大小一致
foreground = foreground.resize(background.size)

# 把前景图叠加在背景图上
alpha = foreground.split()[3]
background.paste(foreground, (offset_x, offset_y), mask=alpha)

# 保存合成后的图像
background.save('result.jpg')