Обрезать пробелы с помощью PIL

Есть ли простое решение для обрезки пробелов на изображении в 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)

Но у этого решения есть недостатки:

  1. Мне нужно определить цвет рамки, это для меня это не имеет большого значения, мои изображения имеют белый фон
  2. И самый недостаток, это решение PIL не поддерживает ключ ImageMagick -fuzz. Чтобы добавить некоторую нечеткую обрезку. так как у меня могут быть некоторые артефакты сжатия jpeg и ненужные огромные тени.

Может быть, в PIL есть какие-то встроенные функции? Или есть какое-то быстрое решение?

47
задан Eugene Nagorny 16 May 2012 в 09:40
поделиться