Расширенное кадрирование с помощью библиотеки изображений Python - PullRequest
0 голосов
/ 02 августа 2020

У меня есть изображение формата A4 png с некоторым текстом в нем, оно прозрачное, мой вопрос в том, как я могу обрезать изображение, чтобы на нем был только текст, я знаю об обрезке в PIL, но если я установил его на фиксированные значения , он не сможет обрезать другое изображение с этим текстом в другом месте. Итак, как я могу это сделать, чтобы он нашел место на этом большом и пустом изображении, где размещен текст, наклейка или что-то еще, и обрезал его, чтобы изображение идеально подошло?

Заранее спасибо!

1 Ответ

0 голосов
/ 04 августа 2020

Вы можете сделать это, извлекая альфа-канал и обрезая его. Итак, если это ваше входное изображение:

enter image description here

Here it is again, smaller and on a chessboard background so you can see its full extent:

enter image description here

The code looks like this:

#!/usr/bin/env python3

from PIL import Image

# Load image
im = Image.open('image.png')

# Extract alpha channel as new Image and get its bounding box
alpha = im.getchannel('A')
bbox  = alpha.getbbox()

# Apply bounding box to original image
res = im.crop(bbox)
res.save('result.png')

Here is the result:

enter image description here

And again on a chessboard pattern so you can see its full extent:

введите описание изображения здесь

Ключевые слова : обработка изображений, Python, PIL / Pillow, обрезка до альфа, обрезка до альфа, обрезка до прозрачности, обрезка до прозрачности.

...