Wie füge ich Bilder in der Kommandozeile zusammen? [geschlossen]

110

Ich möchte die CSS Sprite- Technik ausprobieren, um einige Miniaturansichten als einzelnes Bild zu laden. Daher muss ich einige Miniaturansichten in einer einzelnen Datei offline auf dem Server "zusammenführen".

Angenommen, ich habe 10 Miniaturansichten derselben Größe. Wie würden Sie vorschlagen, dass ich sie über die Linux-Befehlszeile "zusammenführe"?

Michael
quelle

Antworten:

197

Sie können auch ImageMagic ausprobieren, das sich hervorragend zum Erstellen von CSS-Sprites eignet. Ein Tutorial dazu hier .

Beispiel (vertikales Sprite):

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

Beispiel (horizontales Sprite):

convert image1.png image2.png image3.png +append result/result-sprite.png
Petr Mensik
quelle
45
Hinweis: Dadurch wird ein vertikales Sprite generiert, das +appendanstelle des horizontalen Sprites verwendet wird -append.
Chango
13
Wenn Sie faul sind,convert -append *.png out.png
ChillarAnand
Dies funktioniert, aber für große Dateien dauert es viel Zeit. Gibt es einen Weg zum schnellen Compositing?
Vlad Tsepelev
@VladTsepelev Wenn Sie viele PNGs zusammenfassen, müssen Sie sie (in eine Pixmap) für den Vorgang dekodieren und schließlich erneut codieren. Wenn Sie ein vorhandenes Sprite sehr oft erweitern möchten, kann das Beibehalten der dekodierten Pixmap-Versionen möglicherweise die Dinge beschleunigen. Siehe meine Antwort für die Verwendung der PNM-Tools, um diesen Vorgang auszuführen. Aber natürlich sind die Pixmap-Versionen viel größer als die PNGs. Erwarten Sie also mehr Speicherplatz.
Alfe
1
Es heißt: ´convert-im6.q16: Breite oder Höhe überschreitet das Limit `ktwo201121817-c102_lpd-targ.fits_autoaper.png '@ error / cache.c / OpenPixelCache / 3839.´
zabop
28

Sie können auch GraphicsMagick verwenden , eine leichtere und schnellere Gabel von ImageMagick:

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

Ein einfacher Zeitvergleich zum Zusammenführen von 12 Bildern:

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 ist fast doppelt so schnell wie ImageMagick.

tjanez
quelle
7

Verwenden Sie das pnmcatdes netpbm-Pakets.

Sie müssen wahrscheinlich Ihre Eingabedateien hin und her konvertieren, um sie zu verwenden:

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

Wenn Sie die Bilder lieber von links nach rechts zusammenführen möchten, verwenden Sie den folgenden Befehl:

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

Beachten Sie die +appendstatt -append.

abu_bua
quelle