如何使用Python 3模块Pillow合并相同大小的图像?


Pillow 或 PIL 是一个强大的 Python 库,用于处理和操作图像。图像处理中最常见的任务之一是将多张图像合并为单张图像。它提供了一系列用于加载、操作和保存各种格式图像的功能。Pillow 的主要功能之一是支持图像合并。它支持各种图像,包括“jpeg”、“png”、“bmp”、“gif”、“ppm”、“tiff”。使用此模块,我们几乎可以对数字图像做任何事情,例如基本的图像处理功能、点运算、使用内置卷积核过滤图像以及颜色空间转换。

在本文中,我们将学习如何在 Python 3 中使用 Pillow 模块合并相同大小的图像。

但在开始之前,让我们首先了解什么是图像合并以及为什么它很重要。图像合并是将两张或更多图像组合成单张图像的过程。它通常用于创建全景图、将多张图像合成到单个帧中或混合图像以创建新图像的应用程序。需要注意的是,为了合并图像,它们需要具有相同的大小。

使用 Pillow 合并相同大小图像的步骤

以下是使用 Python3 中的 Pillow 合并相同大小图像的步骤:

步骤 1:导入所需的模块

首先,我们需要导入所需的模块。在本例中,我们需要从 Pillow 库导入 Image 模块。

from PIL import Image

步骤 2:打开图像

接下来,我们需要打开要合并的图像。我们可以使用 Image.open() 方法来实现。此方法返回一个 Image 对象,我们可以用它来操作图像。

myimage1= Image.open('image1.jpg')
myimage1= Image.open('image2.jpg')

步骤 3:检查图像的大小

在合并图像之前,我们需要确保图像具有相同的大小。我们可以使用 size 属性检查图像的大小。

if myimage1.size == myimage2.size:
   # continue with merging
else:
   print('The images must have the same size to merge them using Pillow!')

步骤 4:创建新图像

我们需要创建一个新图像来保存合并后的图像。我们可以使用 Image.new() 方法来实现。此方法将新图像的模式和大小作为参数。

mymerged_image= Image.new('RGB', myimage1.size)

步骤 5:合并图像

最后,我们可以使用 Image.paste() 方法将一张图像粘贴到另一张图像上,从而合并图像。我们需要指定要粘贴图像的坐标。

mymerged_image.paste(myimage1, (0, 0))
mymerged_image.paste(myimage2, (myimage1.size[0], 0))

步骤 6:保存合并后的图像

我们可以使用 Image.save() 方法保存合并后的图像。

mymerged_image.save(mymerged_image.jpg')

现在,您必须很好地理解如何使用 python3 模块 pillow 合并相同大小的图像。让我们看看使用不同方法的一些详细示例。

示例 1:水平合并图像

在下面,我们将水平合并两张图像。第一张图像将在左侧,第二张图像将在右侧。

我们创建一个新的合并图像,其宽度等于其中一张输入图像的宽度,高度等于两张输入图像高度的总和。在这里,我们使用 Image.open() 方法读取两张输入图像 myimage1 和 myimage2。

接下来,我们检查两张图像的大小是否相同。如果相同,我们使用 Image.new() 方法创建一个新图像。Image.new() 方法接受两个参数:新图像的模式(在本例中为“RGB”)和新图像的大小(在本例中,新图像的宽度是两张输入图像宽度的总和,新图像的高度是其中一张输入图像的高度)。

创建新图像后,我们使用 paste() 方法水平合并两张输入图像。paste() 方法接受两个参数:要粘贴的图像和粘贴的位置。在本例中,我们将 image1 粘贴在新图像的左上角 ((0, 0)),并将 myimage2 粘贴在新图像的右上角 ((myimage1.size[0], 0))。最后,我们保存了合并后的图像。

#import the PIL
from PIL import Image
# Open the images
myimage1 = Image.open('myimageone.jpg')
myimage2 = Image.open('myimagetwo.jpg')

# Checking the sizes of the images
if myimage1.size == myimage2.size:
   # Creatin a new image
   mymerged_image = Image.new('RGB', (myimage1.size[0], myimage1.size[1] + myimage1.size[1]))
   # Merging the images horizontally
   mymerged_image.paste(myimage1, (0, 0))
   mymerged_image.paste(myimage2, (myimage1.size[0], 0))
   # Saving the merged image
   mymerged_image.save('mymerged_image_horizontal.jpg')
else:
   print('The images must have the same size to merge them using Pillow')

输出

输入图像

输出图像

示例 2:垂直合并图像

在下面的示例中,我们将垂直合并两张图像。第一张图像将在顶部,第二张图像将在底部。

我们创建一个新图像,其宽度等于两张输入图像宽度的总和,高度等于其中一张输入图像的高度。现在,使用 PIL 模块,我们将第一张图像粘贴在新图像的左上角,并将第二张图像粘贴在新图像的右上角。最后,我们保存了合并后的图像。

#import the PIL
from PIL import Image

# Open the images
myimage1 = Image.open('myimageone.jpg')
myimage2 = Image.open('myimagetwo.jpg')

# Checking the sizes of the images
if myimage1.size == myimage2.size:
   # Creatin a new image
   mymerged_image = Image.new('RGB', (myimage1.size[0], myimage1.size[1] + myimage1.size[1]))

   # Merging the images vertically
   mymerged_image.paste(myimage1, (0, 0))
   mymerged_image.paste(myimage2, (0, myimage1.size[1]))

   # Saving the merged image
   mymerged_image.save('mymerged_image_vertical.jpg')
else:
   print('The images must have the same size to merge them using Pillow')

输出

输入图像

输出图像

结论

在 Python 中,合并相同大小的图像是图像处理中的一项常见任务。在本文中,我们学习了如何使用 Python 3 模块 pillow 合并两张相同大小的图像。我们看到了使用 Python 中的 Pillow 合并图像的完整步骤,以及水平和垂直合并图像的两个完整示例。通过遵循这些步骤,您可以轻松地使用 Pillow 合并相同大小的图像。

更新于:2023年7月31日

340 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告