Come unire le immagini nella riga di comando? [chiuso]


111

Vorrei provare la tecnica CSS Sprite per caricare alcune miniature come una singola immagine. Quindi ho bisogno di "unire" alcune miniature in un unico file offline nel server.

Supponiamo di avere 10 miniature della stessa dimensione. Come suggeriresti di "unirli" dalla riga di comando di Linux?

Risposte:


198

Puoi anche provare ImageMagic che è ottimo per creare sprite CSS. Alcuni tutorial su di esso qui .

Esempio (sprite verticale):

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

Esempio (sprite orizzontale):

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

45
Nota: questo genererà uno sprite verticale, per l'uso dello sprite orizzontale +appendinvece di -append.
Chango

13
Se sei pigro,convert -append *.png out.png
ChillarAnand

Funziona, ma per file di grandi dimensioni richiede molto tempo. C'è modo di compositing veloce?
Vlad Tsepelev

@VladTsepelev Concatenare molti PNG significa decodificarli (in una pixmap) per l'operazione e infine codificarli di nuovo. Se vuoi estendere molto spesso uno sprite esistente, forse mantenere le versioni decodificate pixmap può velocizzare le cose. Vedi la mia risposta per averlo fatto utilizzando gli strumenti PNM per ottenere questa operazione. Ma ovviamente le versioni pixmap sono molto più grandi dei PNG, quindi aspettati di utilizzare più spazio di archiviazione.
Alfe

1
Dice: ´convert-im6.q16: la larghezza o l'altezza supera il limite `ktwo201121817-c102_lpd-targ.fits_autoaper.png '@ error / cache.c / OpenPixelCache / 3839.´
zabop

28

Puoi anche usare GraphicsMagick , un fork più leggero e veloce di ImageMagick:

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

Un semplice confronto temporale dell'unione di 12 immagini:

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 è quasi due volte più veloce di ImageMagick.


7

Usa il pnmcatdel pacchetto netpbm.

Probabilmente devi convertire i tuoi file di input avanti e indietro per usarlo:

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

4

Se preferisci unire le immagini da sinistra a destra, utilizza il seguente comando:

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

Nota il +appendinvece di -append.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.