Как обрезать / изменить размер фона / границы изображения с помощью GraphicsMagick

У меня есть несколько изображений в большом наборе изображений, которые имеют белую (или черную) рамку, которая окружает само изображение. Как я могу...

  1. Обрезать изображение до размера без указанного фона / границы
  2. Измените размер изображения, чтобы заполнить заданный размер по центру.

Например, у меня есть загруженное изображение размером 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

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

Как вы можете видеть, верх и низ обрезаны, и изображение подгоняется по ширине.

Другие вопросы по тегам