Вопрос или проблема
У меня есть несколько изображений произвольного размера, для которых я хочу создать эскизы фиксированного размера 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 для ресайза изображений с добавлением боксов — это простой и эффективный способ создать миниатюры, которые выглядят аккуратно и профессионально. Ответ на данный вопрос не только рассматривает ваши требования, но и предлагает оптимальное решение для достижения желаемого результата без необходимости создавать дополнительные изображения.
С помощью вышеуказанной команды вы сможете легко обрабатывать изображения, чтобы они соответствовали нужным вам параметрам. Не забудьте протестировать и адаптировать команды под свои нужды для достижения лучшего качества изображений.