python - 使用 PIL 裁剪图像时的背景颜色
问题描述
好处PIL.crop
是,如果我们想在图像尺寸之外进行裁剪,它只适用于:
from PIL import Image
img = Image.open("test.jpg")
img.crop((-10, -20, 1000, 500)).save("output.jpg")
问题:如何将添加区域的背景颜色更改为白色(默认:黑色)?
笔记:
如果可能的话,我想保留
crop
,并避免像在裁剪图像中那样创建新图像并将裁剪后的图像粘贴到那里,如果没有足够的白色照片区域,请更改黑色区域。这是原始图像的下载链接:https ://i.stack.imgur.com/gtA70.jpg(303x341 像素)
解决方案
我认为一个函数调用是不可能的,因为相关的 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")
输出:
推荐阅读
- typescript - 有没有办法用可选参数缩小打字稿重载?
- python - Python,Django:具有依赖项的 ForeignKey (models.py)
- firebase - 如何在本机反应中使用 Invisible reCAPTCHA
- python - 有没有绘制 PCA 和 kmeans 的方法?
- python - 如何将生成器对象平均分配到多个列表
- react-native - 在特定屏幕上更改 tabBar
- android - 是否有 GSON java 库功能为 swift Codable 中存在的键提供替代值?
- javascript - 网站自动填写 iPhone 短信密码
- c# - Xamarin - SFChart - 从 PrimaryAxis 更新 IntervalType 时出现错误
- windows - 如何在 Ansible 中迭代事实