2013-11-19 6 views
59

Я хотел бы попробовать технику CSS Sprite загрузить несколько эскизов в виде одного изображения. Поэтому мне нужно «объединить» несколько эскизов в одном файле, автономном на сервере.Как объединить изображения в командной строке Linux?

Предположим, у меня есть 10 миниатюр одинакового размера. Как вы предлагаете мне «слить» их из командной строки Linux?

ответ

104

Вы также можете попробовать ImageMagic, который отлично подходит для создания CSS спрайтов. Некоторые учебники об этом here. Пример

convert image1.png image2.png image3.png -append result/result-sprite.png 
+36

Примечание: Это приведет к созданию вертикального спрайта, для горизонтального спрайта используйте '+ append' вместо' -append'. – Chango

+8

Если вы ленивы, 'convert -append * .png out.png' – ChillarAnand

+0

Это работает, но для огромных файлов требуется много времени. Есть ли способ быстрого компоновки? –

5

Используйте pnmcat пакета netpbm.

Вы, вероятно, придется конвертировать ваши входные файлы взад и вперед для его использования:

pnmcat -lr <(pngtopnm 1.png) <(pngtopnm 2.png) | pnmtopng > all.png 
12

Вы также можете использовать GraphicsMagick, зажигалку и быстрее вилки из ImageMagick:

gm convert image1.png image2.png -append combined.png 

простое сравнение времени объединения 12 изображений:

time convert image{1..12}.jpg -append test.jpg 

real 0m3.178s 
user 0m3.850s 
sys  0m0.376s 

time gm convert image{1..12}.jpg -append test.jpg 

real 0m1.912s 
user 0m2.198s 
sys  0m0.766s 

GraphicsMagick почти в два раза быстро, как ImageMagick.

Смежные вопросы