Какие параметры нужно преобразовать (?) Для получения этого ВЫХОДА из этого ВХОДА?
ВХОД:
ВЫХОД:
источник
Какие параметры нужно преобразовать (?) Для получения этого ВЫХОДА из этого ВХОДА?
ВХОД:
ВЫХОД:
Поскольку я не хотел, чтобы изображения совпали с правой стороной, мне пришлось использовать другой подход ( composite
инструмент ImageMagick ):
convert -size 500x500 xc:white canvas.png
convert canvas.png in.png -geometry +200+200 -composite out.png
-size
должен быть конечный размер изображения, который вы хотите, canvas.png
это чистый белый холст, in.png
будет изображение, которое вы хотите добавить, и -geometry
смещение позиционирования.
Моя версия ImageMagick '6.7.8-0 2012-07-04 Q16'. Согласно документу ответ команды @kev должен работать:
convert in.png -gravity east -extent 520x352 out.png
Однако, как и в большинстве вопросов ImageMagick, вы можете достичь одной и той же цели разными способами. Вы можете использовать montage
как это:
montage null: in.png -tile 2x1 -geometry +17+0 out1.png
При этом используется специальное изображение 'null:' для объединения его с in.png
.
Это правда, что convert
вам нужно пересчитать значения, которые нужно передать -extent
для каждого входного изображения, которое имеет разный размер.
Сначала используйте, identify -format
чтобы получить размеры изображения:
identify -format '%Wx%H' in.png
Это должно вернуть что-то вроде:
449x352
Хорошо, теперь вам нужно добавить желаемые 71 пиксель, чтобы получить окончательное 520x352
значение. Но вам не нужно делать этот расчет в своем мозгу:
ImageMagick на помощь !, и его магические возможности расчета ... :-)
Вы можете указать identify -format
команде выполнить этот расчет за вас:
identify -format '%[fx:W+71]x%H'
Теперь это должно дать вам результат:
520x352
Поэтому, если вы хотите просто добавить / добавить «белую полосу» шириной 71 пиксель слева от любого изображения, вы можете использовать следующую единственную командную строку:
convert \
in.png \
-gravity east \
-background white \
-extent $(identify -format '%[fx:W+71]x%H' in.png) \
out2.png
Вуаля! Одна командная строка (которая, если честно, включает в себя 2 команды), и вы можете позволить этой команде проигрывать все ваши PNG, JPEG, GIF, ... в каталоге, чтобы автоматически волшебным образом добавить белую полосу размером 71 пиксель к каждой из них:
for i in *.png *.jpeg *jpg *.gif; do
convert \
${i} \
-gravity east \
-background white \
-extent $(identify -format '%[fx:W+71]x%H' ${i}) \
$(convert ${i} -format "71-pixels-padded-left---%t.%e" info:)
done
Для каждого изображения его вывод остается одинаковым типом файла. Конечно, вы можете использовать все выходные данные в формате PNG (или как хотите). Просто замените %t.%e
часть команды на %t.png
...
Документация: http://www.imagemagick.org/Usage/crop/#extent
convert in.png -gravity east -extent 500x352 out.png
-extend 520x352
. +1 за «правильное направление», хотя :-P-background transparent
чтобы сохранить прозрачный фон.У меня есть эта команда, определенная в моем
.bash_profile
. Он автоматически вычислит окончательный размер изображения из требуемого отступа по ширине и высоте (работает с нулями):Пример использования:
источник