Я хотел бы объединить несколько изображений в одно изображение с помощью ImageMagick. Чтобы объяснить немного лучше, я хочу, чтобы результат выглядел примерно так:
То есть у меня есть несколько скриншотов, и я хочу превратить их в одно изображение с оригинальными изображениями друг над другом.
По Google, я столкнулся с «составной» командой, но я не знаю, и если да, то как ее использовать, чтобы получить желаемый результат.
imagemagick
image-processing
Petter
источник
источник
Ответы:
Для любого количества входных файлов с именем :
in-<something>.jpg
Для добавления определенных файлов или пропуска номеров вместо получения полного «глобуса», вы можете явно указать входные файлы и затем ввести
append
командуВы можете использовать
-append
(вместо+append
) для вертикальной вставки.Или же:
также создаст файл
out.jpg
, содержащий вертикальную конкатенацию исходных изображений.convert
Для простой конкатенации в одной строке или столбце достаточно
append
опцииconvert
инструмента. Обратите внимание, что-append
все изображения объединяются по вертикали, создается один столбец с n строками, а по+append
горизонтали - один ряд с n столбцами.(См. ImageMagick: Параметры командной строки .)
montage
Чтобы получить более точный контроль над макетом, нам нужен
montage
инструмент.montage -mode concatenate
склеит входные изображения вместе, какappend
опция и-tile 1x
контролирует применяемый макет.tile
следует формату столбцов × строк , но любая из сторон может отсутствовать иmontage
выяснить, как удовлетворить ограничения.Мы используем
1x
(ровно один столбец с любым количеством строк), чтобы получить тот же эффект, что и-append
. Без-tile 1x
этого он будет объединять изображения по+append
умолчанию-tile x1
(любое количество столбцов в одной строке).(См. Примеры ImageMagick: Монтаж, Массивы изображений .)
источник
convert -append `counter=0; for x in in-*; do if [[ $(($counter % 2)) == 0 ]]; then echo $x; fi; counter=$((counter + 1)); done` out.jpg
должен сделать работу.convert -tile 2x2
etc. будет читать файлы в алфавитном порядке . Это означает, что названные куски0-10
будут читаться как0,10,1,2,..,9
. У меня ушло почти 2 часа, чтобы осознать что-то основное.ls *
, вернет эти значения в этом порядке.