详解使用Python-Pillow填充图像

  • Post category:Python

使用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库填充图像。