Як об’єднати зображення в командному рядку? [зачинено]


111

Я хотів би спробувати техніку CSS Sprite , щоб завантажити кілька мініатюр як одне зображення. Тому мені потрібно "об'єднати" кілька ескізів в один файл в автономному режимі на сервері.

Припустимо, у мене є 10 мініатюр одного розміру. Як би ви запропонували "злити" їх з командного рядка Linux?

Відповіді:


198

Ви також можете спробувати ImageMagic, який чудово підходить для створення CSS-спрайтів. Деякі підручник про це тут .

Приклад (вертикальний спрайт):

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

Приклад (горизонтальний спрайт):

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

45
Примітка. Це створить вертикальний спрайт для використання горизонтального спрайту +appendзамість -append.
Чанго

13
Якщо ти лінивий,convert -append *.png out.png
ChillarAnand

Це працює, але для величезних файлів потрібно багато часу. Чи є спосіб швидкого складання?
Влад Цепелєв

@VladTsepelev Складати багато PNG означає їх розшифрувати (до піксельної карти) для операції та остаточно закодувати їх знову. Якщо ви хочете розширювати існуючий спрайт дуже часто, можливо, зберігання розшифрованих версій піксельної карти може прискорити роботу. Дивіться мою відповідь, як це зробити за допомогою інструментів PNM для досягнення цієї операції. Але звичайно версії pixmap набагато більше, ніж PNG, тому розраховуйте використовувати більше місця для зберігання.
Альфе

1
У ньому написано: ´convert-im6.q16: ширина або висота перевищує ліміт `ktwo201121817-c102_lpd-targ.fits_autoaper.png '@ error / cache.c / OpenPixelCache / 3839.´
zabop

28

Ви також можете скористатися 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.


7

Скористайтеся pnmcatпакетом netpbm.

Можливо, вам доведеться конвертувати вхідні файли туди-сюди, щоб використовувати його:

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

4

Якщо ви віддаєте перевагу злиття зображень зліва направо, скористайтеся такою командою:

convert image{1..0}.png +append result/result-sprite.png

Зверніть увагу на +appendзамість -append.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.