Наложение нескольких изображений на некотором уровне пикселей с помощью Imagemagick

Например, у меня есть 4 изображения размером 1000х800. Я хочу объединить все эти изображения в одно изображение. Я знаю, что есть команда

convert +append image[1-4].jpg output.jpg

Но я хочу объединить второе изображение с первым, перекрыв 250 пикселей.

т.е. в моем последнем изображении image1 имеет 750 пикселей, а также image2 и 3, а последнее изображение имеет 1000 пикселей.

Используя приведенную выше команду конвертирования, мы получим размер изображения 4000x800, но здесь я хочу, чтобы он был ((750*3)+1000*1)x800. т.е. 3250x800.

Кроме того, как я могу сделать это, добавляя вертикально?

3 ответа

Решение

Вы не говорите, как вы хотите перекрывать их. Если вам не нужно смешивать, то в ImageMagick вы можете использовать smush вместо добавления. Smush допускает смещения (пробелы) или перекрытия. Первые с положительными значениями, а вторые с отрицательными значениями перекрывают последующие изображения. -Smush добавляет вертикально и + Smush добавляет горизонтально. Цвет фона контролирует расстояние между пробелами при использовании положительных значений для аргумента.

Так что постарайтесь

convert image[1-4].jpg +smush -256x0 output.jpg

или же

convert image1.jpg image2.jpg image3.jpg image4.jpg +smush -256x0 output.jpg

или если это единственные изображения с таким синтаксисом, то

convert image*.jpg +smush -256x0  output.jpg

Оператор "+smush" будет действовать как "+append", но он принимает аргумент. К положительному числу добавляются изображения, разделенные таким количеством пикселей. Отрицательное число добавит изображения с таким большим перекрытием. Ваша примерная команда будет выглядеть так...

convert image[1-4].jpg +smush -250 output.jpg

Чтобы добавить изображения по вертикали, используйте форму оператора "-smush". В любом случае оператор выровняет изображения в соответствии с текущей настройкой "-gravity".

Я только что проверил следующее в Imagemagick 6.9.9.33 Q16 Mac OSX.

Обратите внимание, что я тестировал использование -smush с положительными значениями, чтобы увидеть пропуски, а не перекрытия. Это было только для тестирования. Если вы следуете последней команде, она должна нормально работать с отрицательными значениями, если вы хотите перекрывать, а не ставить пропуски между изображениями.

Создать 13 изображений с именем rose0.jpg ... rose12.jpg

convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "0" test/rose0.jpg
convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "1" test/rose1.jpg
convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "2" test/rose2.jpg
convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "3" test/rose3.jpg
convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "4" test/rose4.jpg
convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "5" test/rose5.jpg
convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "6" test/rose6.jpg
convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "7" test/rose7.jpg
convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "8" test/rose8.jpg
convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "9" test/rose9.jpg
convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "10" test/rose10.jpg
convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "11" test/rose11.jpg
convert rose: -fill white -gravity center -pointsize 18 -annotate +0+0 "12" test/rose12.jpg


Тогда смягчи их. Это терпит неудачу и только добавляет 0-2. (Я думаю, что эта структура ограничена теми цифрами, которые она видит)

convert test/rose[0-12].jpg -smush 10 test/rose_smush.jpg

Это работает, если используются только однозначные числа.

convert test/rose[0-9].jpg -smush 10 test/rose_smush.jpg

Правильный способ сделать это - использовать следующую структуру.

convert test/rose%d.jpg[0-12] -smush 10 test/rose_smush.jpg

См. Раздел "Ссылка на имя файла" на http://www.imagemagick.org/script/command-line-processing.php

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