web-dev-qa-db-fra.com

Comment fusionner des images en ligne de commande?

Je voudrais essayer la technique CSS Sprite pour charger quelques vignettes en une seule image. J'ai donc besoin de "fusionner" quelques vignettes dans un seul fichier hors connexion sur le serveur.

Supposons que j'ai 10 vignettes de la même taille. Comment suggéreriez-vous que je les "fusionne" depuis la ligne de commande Linux?

90
Michael

Vous pouvez également essayer ImageMagic , ce qui est excellent pour créer des sprites CSS. Quelques tutoriels à ce sujet ici .

Exemple (Sprite vertical):

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

Exemple (Sprite horizontal):

convert image1.png image2.png image3.png +append result/result-Sprite.png
163
Petr Mensik

Vous pouvez également utiliser GraphicsMagick , un fork plus léger et plus rapide d’ImageMagick:

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

Une simple comparaison temporelle de la fusion de 12 images:

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 est presque deux fois plus rapide que ImageMagick.

24
tjanez

Utilisez le pnmcat du paquet netpbm.

Vous devez probablement convertir vos fichiers d’entrée pour l’utiliser:

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

Si vous préférez fusionner les images de gauche à droite, utilisez la commande suivante:

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

Noter la +append au lieu de -append.

3
abu_bua