Как обрезать / изменить размер фона / границы изображения с помощью GraphicsMagick
У меня есть несколько изображений в большом наборе изображений, которые имеют белую (или черную) рамку, которая окружает само изображение. Как я могу...
- Обрезать изображение до размера без указанного фона / границы
- Измените размер изображения, чтобы заполнить заданный размер по центру.
Например, у меня есть загруженное изображение размером 1280x1024px, оно имеет белую (или черную) границу, где внутренний размер, скажем, 800x700 (может не центрироваться), я хочу обрезать эту границу, а затем изменить ее размер, чтобы заполнить Выход 640х480. Это позволит эффективно получить внутреннее изображение, а затем заполнить 640x480, эффективно обрезая дополнительные 100px высоты от оригинала.
Я бы предпочел что-то, что может быть пакетным / shell-скриптом с графической магией, но также примет решение через phantomjs. Я бы предпочел избегать дополнительных инструментов / языков, если это вообще возможно.
1 ответ
Trim удалит границы в соответствии с углами пикселей,
Экстент и Гравитация сделают изображение определенного размера и выровняют его соответственно,
Также см. Параметры геометрии,
convert -trim source.png trim.png
convert -extent 800x600 -gravity center trim.png frame.png
Вот размеры показанных изображений:
- Источник: 722 х 480
- Отделка: 640 х 400
- Рамка: 800x 600
РЕДАКТИРОВАТЬ
Это изменит размер изображения до 800 пикселей в ширину и увеличит его до 600, если оно будет меньше:
convert -resize 800x600^ -extent 800x600 -gravity center trim.png resize.png
См. http://www.imagemagick.org/Usage/resize/ для всех деталей, особенно вы должны проверить, как он ведет себя на портретных изображениях.
Кроме того, если вы удалите 800 на resize
параметр, он будет соответствовать его высоте:
convert -resize x600^ -extent 800x600 -gravity center trim.png resize.png
РЕДАКТИРОВАТЬ 2
Вы должны использовать каретку с одной из осей:
convert -resize 1200^ -extent 1200x600 -gravity center trim.png resize1.png
Как вы можете видеть, верх и низ обрезаны, и изображение подгоняется по ширине.