Как использовать convert от ImageMagick для изменения размера изображения с добавлением черных полос для получения результата фиксированного размера?

Вопрос или проблема

У меня есть несколько изображений произвольного размера, для которых я хочу создать эскизы фиксированного размера 800×600, сохраняя оригинальное соотношение изображений и добавляя белую рамку, чтобы заполнить оставшееся пространство. Я хотел бы, чтобы рамка была как можно более минимальной, что означает, что процесс будет следующим:

  • выбрать ту ось, которая больше
  • если x больше, масштабировать изображение (сохраняя соотношение), чтобы новое x было 800.
  • если y больше, масштабировать изображение (сохраняя соотношение), чтобы новое y было 600.
  • результат на этом этапе не будет 800×600 (если оригинал не был точно в соотношении 4:3), поэтому отцентрировать результат в прямоугольнике 800×600 и добавить белый фон.

Я могу выполнить первые 3 шага с помощью convert -resize 800x600 $input $output, так что я предполагаю, что могу наложить это на другое изображение с помощью какого-нибудь другого инструмента imagemagick, но было бы замечательно, если бы я мог сделать это одним ударом. Кто-нибудь знает, возможно ли это?

Я на самом деле только что разобрался: это требует 800×600 белого изображения для слияния, но это нормально.

convert ~/white.jpg ~/input.png  -resize 800x600 -gravity center -composite ~/output.jpg

Если существует общее мнение о том, что задавать вопрос, а затем отвечать на него самому – это пустая трата времени, то я буду рад удалить вопрос.

Я не уверен, является ли это новой функцией с 2016 года, но есть еще один способ, который не требует дополнительного изображения (например, white.jpg).

Вы можете использовать -extent флаг с теми же -resize и -gravity опциями, что и ваше решение:

convert ~/input.png -resize 800x600 -background white -gravity center -extent 800x600 ~/output.jpg

Ответ или решение

Использование ImageMagick для ресайза изображений с добавлением бокса — это мощный и эффективный способ обработки графики. В данном руководстве мы рассмотрим, как создать миниатюры с фиксированным размером 800×600, сохраняя при этом оригинальные пропорции изображений и добавляя белые поля (letterboxing) там, где это необходимо.

Шаг 1: Установка ImageMagick

Если у вас еще не установлен ImageMagick, вы можете установить его с помощью вашего менеджера пакетов. На большинстве дистрибутивов Linux это можно сделать следующим образом:

sudo apt-get install imagemagick

Для macOS можно использовать Homebrew:

brew install imagemagick

Шаг 2: Подготовка изображений

Убедитесь, что у вас есть исходное изображение, которое вы хотите обработать. Кроме того, вы будете использовать команду convert, которая является частью ImageMagick.

Шаг 3: Использование команды для ресайза и добавления бокса

Для создания фиксированных изображений 800×600 с добавлением боксов вы можете использовать следующую команду:

convert ~/input.png -resize 800x600 -background white -gravity center -extent 800x600 ~/output.jpg

Подробное объяснение команды:

  • convert: это основная команда для обработки изображений в ImageMagick.
  • ~/input.png: путь к вашему исходному изображению.
  • -resize 800x600: изменяет размер изображения так, чтобы оно подходило по одной из осей (ширине или высоте) не превышая 800 пикселей по ширине или 600 пикселей по высоте, сохраняя оригинальные пропорции.
  • -background white: устанавливает белый фон, который будет использован для добавления боксов на пустое место.
  • -gravity center: центрирует изображение в пределах фиксированного размера 800×600.
  • -extent 800x600: определяет окончательный размер изображения. Этот параметр создает рамку вокруг уменьшенного изображения (если оно не заполняет всю область), используя ранее указанный фон.
  • ~/output.jpg: путь для сохранения конечного изображения.

Альтернативные параметры

Если вы хотите, вы можете экспериментировать с различными параметрами, такими как цвет фона, или использовать другие форматы, например, PNG вместо JPG, для большей гибкости в обработке изображений.

Заключение

Использование ImageMagick для ресайза изображений с добавлением боксов — это простой и эффективный способ создать миниатюры, которые выглядят аккуратно и профессионально. Ответ на данный вопрос не только рассматривает ваши требования, но и предлагает оптимальное решение для достижения желаемого результата без необходимости создавать дополнительные изображения.

С помощью вышеуказанной команды вы сможете легко обрабатывать изображения, чтобы они соответствовали нужным вам параметрам. Не забудьте протестировать и адаптировать команды под свои нужды для достижения лучшего качества изображений.

Оцените материал
Добавить комментарий

Капча загружается...