详解使用Python-Pillow填充图像

  • Post category:Python

使用Python的Pillow库,可以对图像进行各种操作,其中填充图像就是一种非常常见的需求。以下是使用Pillow进行图像填充的详细攻略:

安装Pillow库

首先,需要安装Python的Pillow库。可以使用pip工具在命令行中进行安装:

pip install Pillow

加载图像

在Python中,使用Pillow来加载和操作图像非常简单。首先,需要使用Pillow中的Image模块来加载图像。下面代码展示了如何加载一张名为example.jpg的图像文件:

from PIL import Image

img = Image.open('example.jpg')

图像填充

在加载图像后,可以使用Pillow中的ImageOps模块来实现填充图像。ImageOps模块包含一系列用于图像操作的函数。其中,pad函数用于填充图像。以下代码展示了如何在原图像周围填充红色区域:

from PIL import Image, ImageOps

img = Image.open('example.jpg')
width, height = img.size

top = height//4  # 上填充区域大小
bottom = height//4  # 下填充区域大小
left = width//4  # 左填充区域大小
right = width//4  # 右填充区域大小

red = (255, 0, 0)  # 红色填充区域颜色

padded_img = ImageOps.expand(img, border=(left, top, right, bottom), fill=red)
padded_img.save('padded_example.jpg')

这段代码中,首先定义了上下左右四个方向的填充大小。然后,使用RGB颜色模式定义红色填充区域的颜色。接着,使用ImageOps.expand函数在四个方向上进行填充,并保存结果图像。

示例1:在图像周围填充黑色边框

以下示例展示了如何使用ImageOps模块,在图像周围填充黑色边框。

from PIL import Image, ImageOps

img = Image.open('example.jpg')
width, height = img.size

border_size = 10  # 边框大小
black = (0, 0, 0)  # 黑色边框颜色

padded_img = ImageOps.expand(img, border=border_size, fill=black)
padded_img.save('example_border.jpg')

这段代码中,定义了10像素的边框并使用黑色填充,最后将结果保存为名为example_border.jpg的文件。

示例2:在图像上下两端分别填充白色和蓝色区域

以下示例展示了如何在图像上下两端分别填充白色和蓝色区域。

from PIL import Image, ImageOps

img = Image.open('example.jpg')
width, height = img.size

top = height // 5  # 上边填充大小
bottom = height // 5  # 下边填充大小
left = 0  # 左边填充大小
right = 0  # 右边填充大小

white = (255, 255, 255)  # 白色填充颜色
blue = (0, 0, 255)  # 蓝色填充颜色

top_img = ImageOps.expand(img.crop((0, 0, width, top)), border=(left, 0, right, 0), fill=white)
bottom_img = ImageOps.expand(img.crop((0, height - bottom, width, height)), border=(left, 0, right, 0), fill=blue)

result_img = Image.new('RGB', (width, height + top + bottom), (0, 0, 0))
result_img.paste(top_img, (0, 0))
result_img.paste(bottom_img, (0, height + top))

result_img.save('example_padded.jpg')

这段代码中,首先计算出上下两端的填充大小。然后,使用crop函数从原图像中截取出上下两个部分。使用ImageOps.expand函数对这两个部分进行填充。最后,使用Image.new函数创建一个大小为原图像加上填充大小的全黑图像。使用paste函数将上下两个填充后的部分粘贴到结果图像上,并保存结果。