Перейти к содержимому

Объедините несколько изображений с помощью ImageMagick

149

Я хотел бы объединить несколько изображений в одно изображение с помощью ImageMagick. Чтобы объяснить немного лучше, я хочу, чтобы результат выглядел примерно так:

То есть у меня есть несколько скриншотов, и я хочу превратить их в одно изображение с оригинальными изображениями друг над другом.

По Google, я столкнулся с «составной» командой, но я не знаю, и если да, то как ее использовать, чтобы получить желаемый результат.

120 690 просмотров
Petter спросил 15 лет назад
P 851

1 ответ

228
Принятый ответ

Для любого количества входных файлов с именем :in-<something>.jpg

convert -append in-*.jpg out.jpg 

Для добавления определенных файлов или пропуска номеров вместо полного «глобуса», вы можете явно указать входные файлы и поставить append команду

конвертировать in-1.jpg in-5.jpg in- N .jpg + добавить out-in1-plus-in5-and-in N .jpg

Вы можете использовать -append(вместо +append) для вертикальной вставки.

Или же:

montage -mode concatenate -tile 1x in-*.jpg out.jpg 

также создаст файл 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: Монтаж, Массивы изображений .)

Благодарю. Приложение append работает нормально, но я считаю, что монтаж не работает: если шрифты ghostscript не установлены, он вылетит, ДАЖЕ, если вы не аннотируете изображения. Шрифты следует загружать по запросу, а не заранее.

Bram · 12 лет назад · 1

@Bram: я этого не знал и полностью согласен. Знаете ли вы, если GraphicsMagick ведет себя так же?

peth · 12 лет назад · 0

Как бы я пропустить все остальные изображения? Я хотел бы проанализировать подмножество - in-1, in-3, in-5 и т. Д.

Mike Robinson · 12 лет назад · 0

@MikeRobinson convert -append `counter = 0; для х в in- *; do if [[$ (($ counter% 2)) == 0]]; затем эхо $ x; Fi; counter = $ ((counter + 1)); done` out.jpg должен сделать работу.

gozzilli · 11 лет назад · 2

@peth: Ваш ответ начинается с примера команды convert, которая имеет -append *** перед *** именами входных файлов. Анонимный пользователь добавил пример с + append *** после *** имени входного файла. Они оба действительны? Является ли заказ значительным?

Scott · 10 лет назад · 0

Обратите внимание, что команда convert -tile 2x2 и т. Д. Будет читать файлы ** в алфавитном порядке **. Это означает, что чанки с именем 0-10 будут читаться как 0,10,1,2, .., 9. У меня ушло почти 2 часа, чтобы осознать что-то такое основное.

Blauhirn · 9 лет назад · 0

@Blauhirn: Это преобразование, сортирующее имена файлов, или это просто ваш глобус, возвращающий файлы в таком порядке? например, ls * вернет эти значения в указанном порядке.

naught101 · 8 лет назад · 0

@ naught101 О, ты прав! Должно быть, я использовал шар там.

Blauhirn · 8 лет назад · 0
peth ответил 15 лет назад
P 7 130