Вы можете использовать ImageMagick , который устанавливается в большинстве дистрибутивов Linux и доступен для macOS и Windows.
Чтобы обрезать один образ, запустите терминал (или командную строку в Windows) иrun:
magick input.png -fuzz 20% -trim result.png
Это даст вам это - хотя я добавил черную рамку, чтобы вы могли разглядеть ее размер:
Если у вас есть много дел, вы можете сделать их параллельно с GNU Parallel следующим образом:
parallel -X magick mogrify -trim ::: *png
Я сделал 1000 копий вашего изображения и сделал все эточерез 4 секунды на MacBook Pro.
Если у вас нет GNU Parallel , вы можете сделать 1000 изображений за 12 секунд, например:
magick mogrify -trim *png
Если вы хотите это сделатьс Python вы можете попробовать что-то вроде этого:
#!/usr/bin/env python3
from PIL import Image, ImageChops
# Load image and convert to greyscale
im = Image.open('image.png').convert('L')
# Invert image and find bounding box
bbox = ImageChops.invert(im).getbbox()
# Debug
print(*bbox)
# Crop and save
result = im.crop(bbox)
result.save('result.png')
Это дает тот же вывод, что и ImageMagick версия.Я бы посоветовал вам использовать многопоточный инструмент для параллельного выполнения партий для лучшей производительности.
Последовательная версия занимает 65 секунд для 1000 изображений, а мультиобработка - 14 секунд для 1000 изображений.