详解如何使用Python 3模块pillow合并相同大小的图像

  • Post category:Python

使用Python 3的pillow模块合并相同大小的图像可以通过以下步骤完成:

安装pillow模块

首先需要安装pillow模块,在命令行输入以下命令:

pip3 install pillow

加载并打开图像

要合并的图片需要被加载并打开。在pillow中加载图片并打开可以使用下面的代码:

from PIL import Image

im1 = Image.open("image1.jpg")
im2 = Image.open("image2.jpg")

计算要生成的新图片尺寸

在合并图片之前,需要计算出新图片的尺寸。在这里假设要合并的两张图片具有相同的尺寸:

width, height = im1.size
new_image = Image.new('RGB', (width*2, height))

在这里定义了新图片的尺寸为宽度为原图片宽度的两倍,高度为原图片高度的大小,可以根据实际应用场景进行修改。

合并图片

新图片生成后,接着需要合并的两张图片需要被剪切并粘贴到新图片上。这可以使用pillow模块中的crop()方法和paste()方法来完成。下面的代码展示了如何将两张图片垂直方向上合并。

new_image.paste(im1, (0, 0))
new_image.paste(im2, (width, 0))

new_image.save("merged_image.jpg")

这里的粘贴坐标是横坐标为0,纵坐标为0的位置,和横坐标为原图片宽度,纵坐标为0的位置。这个位置可以通过调整横坐标和纵坐标的数值来控制图片的拼接方向和位置。

最后使用save()方法保存新图片。

示例1:横向合并图片

下面的代码举例说明了如何将两张图片横向进行拼接。

from PIL import Image

# 加载并打开两张图片
im1 = Image.open("image1.jpg")
im2 = Image.open("image2.jpg")

# 计算新图片尺寸
width, height = im1.size
new_image = Image.new('RGB', (width*2, height))

# 横向合并两张图片
new_image.paste(im1, (0, 0))
new_image.paste(im2, (width, 0))

# 保存新图片
new_image.save("merged_image.jpg")

示例2:合并多张相同大小的图片

下面的代码举例说明了如何合并多张相同大小的图片。

from PIL import Image

# 所有要合并的图片路径
image_paths = ['image1.jpg', 'image2.jpg', 'image3.jpg']

# 加载并打开所有要合并的图片
images = [Image.open(path) for path in image_paths]

# 计算新图片尺寸
width, height = images[0].size
new_image = Image.new('RGB', (width*len(images), height))

# 横向合并所有图片
for i, image in enumerate(images):
    new_image.paste(image, (i*width, 0))

# 保存新图片
new_image.save("merged_image.jpg")

在这里,可以通过循环将要合并的所有图片都加载并粘贴到新图片上,从而实现合并多张相同大小的图片的目的。