使用Python的Pillow库可以对图像进行多种处理,包括填充图像。下面是使用Pillow库填充图像的完整攻略:
安装 Pillow
用pip来安装 Pillow,可以使用以下命令:
pip install Pillow
导入 Pillow
在Python脚本中导入Pillow库:
from PIL import Image, ImageOps
具体实现
在Pillow库中,ImageOps提供了fill()方法,可以填充图像。fill()方法需要先创建一个与原图像相同大小的背景画布,然后在该画布上放置原图。
以下是一个示例代码,将图片填充到400×400的画布上,并把背景设置为白色:
from PIL import Image, ImageOps
def add_padding(image_path):
orig_img = Image.open(image_path)
# 获取图片大小
width, height = orig_img.size
# 创建一个白色白色的画布
new_size = (400, 400)
new_img = Image.new('RGB', new_size, (255, 255, 255))
# 把原图画到画布中心位置
left = (new_size[0] - width) // 2
top = (new_size[1] - height) // 2
new_img.paste(orig_img, (left, top))
new_img.save('padded.png')
上述示例代码中,open()方法可以打开图片文件,并返回一个Image对象。Image对象的size
属性可以获取整数的宽度和高度。一个新的画布可以使用Image.new()方法创建,传递”RGB”模式以及新画布的大小,以及背景色(这里是白色)。paste()方法可以将原始图像放在将画布中心点。最后,使用save()方法将新图像保存为”padded.png”。
下面再分享一个示例代码,仅缩小图像,不填充:
from PIL import Image, ImageOps
def resize_image(image_path):
orig_img = Image.open(image_path)
# 按比例缩放图像,保持宽高比
ratio = 0.2
width, height = orig_img.size
new_width = int(width * ratio)
new_height = int(height * ratio)
resized_img = orig_img.resize((new_width, new_height), Image.ANTIALIAS)
resized_img.save('resized.png')
上述示例代码中,”ANTIALIAS”是用于平滑采样的选项,保证缩小过程中不会失真。resize()
方法将原始图像的大小更改为新大小。最后,使用save()方法将新图像保存为”resized.png”。
注意,使用resize()
方法时需要保持图像的宽高比,否则图像会变形。
希望这些示例代码能够帮助你理解如何使用Pillow库填充图像。