首页 > 解决方案 > 使用 PIL 裁剪图像时的背景颜色

问题描述

好处PIL.crop是,如果我们想在图像尺寸之外进行裁剪,它只适用于:

from PIL import Image
img = Image.open("test.jpg")
img.crop((-10, -20, 1000, 500)).save("output.jpg")

问题:如何将添加区域的背景颜色更改为白色(默认:黑色)?

在此处输入图像描述

笔记:

标签: pythonimagepython-imaging-librarypillow

解决方案


我认为一个函数调用是不可能的,因为相关的 C 函数似乎将目标图像内存区域归零(在此处查看:https ://github.com/python-pillow/Pillow/blob/master/ src/libImaging/Crop.c#L47 )

您提到对创建新图像并对其进行复制不感兴趣,但无论如何我都会粘贴这种解决方案以供参考:

from PIL import Image
img = Image.open("test.jpg")
x1, y1, x2, y2 = -10, -20, 1000, 500  # cropping coordinates
bg = Image.new('RGB', (x2 - x1, y2 - y1), (255, 255, 255))
bg.paste(img, (-x1, -y1))
bg.save("output.jpg")

输出:

在此处输入图像描述


推荐阅读