Объединить изображения бок о бок (по горизонтали)

99

У меня есть пять изображений размеров: 600x30, 600x30, 600x30, 600x30, 810x30. Их имена: 0.png, 1.png, 2.png, 3.png, 4.png соответственно.

Как объединить их по горизонтали, чтобы получить изображение размером 3210x30 с помощью ImageMagick?

Саске Кун
источник

Ответы:

117

ImageMagick поставляется с montageутилитой. Montage добавит каждое изображение рядом, что позволит вам настроить расстояние между каждым изображением ( -geometry) и общим макетом ( -tile).

montage [0-5].png -tile 5x1 -geometry +0+0 out.png

Другие примеры можно найти на странице использования монтажа.

Emcconville
источник
1
В документации по монтажу указано, что синтаксис [0-5] предназначен для Linux, поэтому я предполагаю, что если вы работаете в Windows, вам нужно ввести / сгенерировать все имена файлов. ie montage 0.png 1.png 2.png 3.png 4.png ...
Дэн
3
Ты лучший! Я искал это всю свою жизнь!
Робин
@ RodrigoGraça См. Руководство по использованию и примерам работы с прозрачностью и фоном.
emcconville 05
он также работает с комбинацией jpg и png. спасибо
joydeep bhattacharjee
3
[0-5].pngсоздаст шесть разных файлов "0.png, 1.png, 2.png, 3.png, 4.png, 5.png", но вы tile 5x1возьмете только пять из них, а у вас останется два выходных файла. При этом следует использовать [0-4].pngили -tile 6x1.
Р. Барретт
80

ImageMagick имеет инструмент командной строки под названием « convert » для объединения изображений по горизонтали или для других целей. Я пробовал эту команду и отлично работаю в вашем случае:
Чтобы соединить изображения по горизонтали:
convert +append *.png out.png

Чтобы расположить изображения вертикально:
convert -append *.png out.png

Tesmojones
источник
которые могут быть добавлены к пользовательскому действию Thunar в этой форме (. ех присоединиться вертикально = вверх-город): convert -append %F joined-image.png. Все выбранные изображения будут объединены в один png в алфавитном порядке
1
Если вы используете ImageMagick 7+, вам нужно будет поместить изображения, над которыми вы работаете, перед параметрами:convert *.png +append out.png
Mazuhl
8

Очень просто с ImageMagick ( brew install imagemagick)

convert +append image_1.png image_2.png new_image_conbined.png
Тьяго
источник
0

Любой, кто использует MiniMagickгем rails, может использовать встроенный инструмент для объединения изображений:

# Replace this with the path to the images you want to combine
images = [
  "image1.jpg",
  "image2.jpg"
]

processed_image = MiniMagick::Tool::Montage.new do |image|
  image.geometry "x700+0+0"
  image.tile "#{images.size}x1"
  images.each {|i| image << i}
  image << "output.jpg"
end

Ознакомьтесь с документацией#geometry , чтобы узнать о параметрах изменения размера и размещения. В текущем примере размер изображения будет 700pxувеличен до высоты при сохранении соотношения сторон изображения. +0+0разместит изображение без промежутков между ними.

Мык Клемме
источник
0

И если изображения имеют разную высоту и вы хотите исправить это для всех, вы можете добавить -resize, например, чтобы исправить высоту 400 пикселей:

convert +append image_1.png image_2.png -resize x400 new_image_conbined.png
Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功
источник