Изначально задача была: извлечь из изображения область ограниченную полигоном, при этом оставшаяся часть изображения должна залиться “прозрачным” цветом (сиречь размер в пикселях не поменяется). Но как оказалось, можно ещё более обобщить эту задачу - вытаскивать произвольные области изображения.
Рассматриваемый инструмент - ImageMagick или GraphicsMagick.
Решение нашлось тут: http://studio.imagemagick.org/pipermail/magick-users/2006-March/017281.html
Коротко суть: на основе исходного изображения (по сути используется только, что бы задать размеры) создаётся временное изображение-маска и нарисованной фигурой/фигурами которые образуются, если их обрисовать полигоном. Остальные пиксели на маске - прозрачные. Далее маска накладывается на исходное изображение и извлекается только нужная его часть…
Теперь на примере.
Есть изображение:
Нужно вырезать область, заданную полигоном (для простоты - треугольник) с координатами: (10,10)-(400,200)-(100,200)
Шаг 1. Делаем маску:
convert screenshot.png -matte -fill none -draw 'color 0,0 reset' -fill white -draw 'polygon 10,10,400,200,100,200' polygon.png
Получаем следующее (картинка белая :simple_smile: ):
Шаг 2. Вырезаем область:
convert screenshot.png -matte polygon.png -compose DstIn -composite out.png
Получаем чего желаем:
Команды рисования можно посмотреть тут: http://www.imagemagick.org/Usage/draw/