Trimmen Sie Whitespace mit PIL

Gibt es eine einfache Lösung zum Trimmen von Leerzeichen auf dem Bild in PIL?

ImageMagick bietet folgende einfache Unterstützung:

convert test.jpeg -fuzz 7% -trim test_trimmed.jpeg

Ich habe eine Lösung für PIL gefunden:

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)

Diese Lösung hat jedoch Nachteile:

Ich muss definierenborder Farbe, es ist keine große Sache für mich, meine Bilder haben einen weißen HintergrundUnd der größte Nachteil ist, dass diese PIL-Lösung ImageMagicks nicht unterstützt-fuzz Schlüssel. Hinzufügen von unscharfem Beschneiden. Ich kann einige JPEG-Komprimierungsartefakte und nicht benötigte große Schatten haben.

Vielleicht hat PIL einige eingebaute Funktionen dafür? Oder gibt es eine schnelle Lösung?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage