Search code examples
pythonpython-imaging-library

Crop the border of an image using PIL


How can I crop the border of an image using PIL?

From an image like this
Start

I want make to this
Result


Solution

  • img = Image.open('your_wonderful_image.png')
    nonwhite_positions = [(x,y) for x in range(img.size[0]) for y in range(img.size[1]) if img.getdata()[x+y*img.size[0]] != (255,255,255)]
    rect = (min([x for x,y in nonwhite_positions]), min([y for x,y in nonwhite_positions]), max([x for x,y in nonwhite_positions]), max([y for x,y in nonwhite_positions]))
    img.crop(rect).save('out.png')