У меня есть пять изображений размеров: 600x30, 600x30, 600x30, 600x30, 810x30. Их имена: 0.png, 1.png, 2.png, 3.png, 4.png соответственно.
Как объединить их по горизонтали, чтобы получить изображение размером 3210x30 с помощью ImageMagick?
Ответы:
ImageMagick поставляется с montage
утилитой. Montage добавит каждое изображение рядом, что позволит вам настроить расстояние между каждым изображением ( -geometry
) и общим макетом ( -tile
).
montage [0-5].png -tile 5x1 -geometry +0+0 out.png
Другие примеры можно найти на странице использования монтажа.
[0-5].png
создаст шесть разных файлов "0.png, 1.png, 2.png, 3.png, 4.png, 5.png", но вы tile 5x1
возьмете только пять из них, а у вас останется два выходных файла. При этом следует использовать [0-4].png
или -tile 6x1
.
ImageMagick имеет инструмент командной строки под названием « convert » для объединения изображений по горизонтали или для других целей. Я пробовал эту команду и отлично работаю в вашем случае:
Чтобы соединить изображения по горизонтали:
convert +append *.png out.png
Чтобы расположить изображения вертикально:
convert -append *.png out.png
convert -append %F joined-image.png
. Все выбранные изображения будут объединены в один png в алфавитном порядке
convert *.png +append out.png
Любой, кто использует 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
разместит изображение без промежутков между ними.
И если изображения имеют разную высоту и вы хотите исправить это для всех, вы можете добавить -resize
, например, чтобы исправить высоту 400 пикселей:
convert +append image_1.png image_2.png -resize x400 new_image_conbined.png