ImageMagick Bildsequenz Dateinamen anhängen

839
Qqwy

Ich verwende das Animationswerkzeug Synfig, um eine Sequenz von PNG-Dateien zu exportieren. Diese haben das folgende Format: C1.0000.png, C1.0001.png, C1.0002.png und so weiter.

Ich möchte diese in ein Spritesheet umwandeln (dh alle zusammen anhängen), ich brauche aber auch die gleichen Animationen, die aber gespiegelt sind.

Hier habe ich das Problem. Bei Verwendung der folgenden Syntax:

 convert C1.*.png -flop C1right.*.png 

Ich bekomme keine ähnliche Sequenz wie zuvor. (C1right.0000.png, C1right.0001.png usw.), aber stattdessen C1right.-0.png, C1right.-1.png usw.

Dies ist an sich nicht so schlimm, aber da der Befehl + anhängen die Bilder alphabetisch und nicht numerisch sortiert, lande ich bei einer Sequenz, bei der nicht Bild 2 Bild 1 folgt, sondern Bild 11 Bild 1, wobei 2 nach 19 endet .

Gibt es eine Möglichkeit, die ursprüngliche Dateinamenstruktur beizubehalten? Oder gibt es eine Möglichkeit, sicherzustellen, dass der + -Anhang die Dateien numerisch sortiert?

1

2 Antworten auf die Frage

2
paulolc

Nur Glob-Muster können nicht verwendet werden. Sie müssen alle Dateien in einer Schleife ausführen:

for f in C1*.png ;do convert $f -flop $(echo $f | sed 's/\./right./') ;done 

Dies wird wie folgt ausgeführt:

convert C1.01000.png -flop C1right.01000.png convert C1.01001.png -flop C1right.01001.png convert C1.01002.png -flop C1right.01002.png 
0
MarianD

Verwenden Sie den Formatbezeichner %04d( 0bedeutet 0, links aufgefüllt, 4d4 Dezimalstellen):

convert C1.*.png -flop C1right.%04d.png 

Die resultierenden Namen werden sein

C1right.0000.png C1right.0001.png C1right.0002.png 

Hinweis : In ImageMagick Version 7+ ersetzen Sie einfach den convertBefehl mit magick.