【发布时间】:2012-05-23 20:38:23
【问题描述】:
有没有简单的解决方案可以在 PIL 中修剪图像上的空白?
ImageMagick 通过以下方式轻松支持它:
convert test.jpeg -fuzz 7% -trim test_trimmed.jpeg
我找到了 PIL 的解决方案:
from PIL import Image, ImageChops
def trim(im, border):
bg = Image.new(im.mode, im.size, border)
diff = ImageChops.difference(im, bg)
bbox = diff.getbbox()
if bbox:
return im.crop(bbox)
但是这种解决方案有缺点:
- 我需要定义
border颜色,这对我来说没什么大不了的,我的图像是白色背景 - 最不利的是,这个 PIL 解决方案不支持 ImageMagick 的
-fuzz键。添加一些模糊裁剪。因为我可以有一些 jpeg 压缩伪影和不需要的巨大阴影。
也许 PIL 有一些内置功能? 或者有什么快速的解决方案?
【问题讨论】:
-
我知道那里的代码完全一样,但也可以在这里找到 - gist.github.com/mattjmorrison/932345
标签: python imagemagick python-imaging-library