ImageMagick: Wie man Farben und Dither begrenzt

1257
pepoluan

Ich versuche, eine GIF-Animation aus mehreren Frames eines Videos zu erstellen. Ich möchte, dass das Ergebnis durch die Begrenzung der Farben klein ist, jedoch ohne Streifenbildung.

Also dachte ich in Gedanken daran, die Dateien zu lesen, dann die Farben zu reduzieren und dann zu schwanken. Nachdem ich eine ganze Reihe von ImageMagick-Operationstheorien auf ihrer Website gelesen hatte, ist dies die Befehlszeile, die ich mir ausgedacht habe:

convert -size 640x640 -colors 64 *.png -ordered-dither o8x8,8,8,4 +map \ -layers Optimize output.gif 

Die .pngDateien wurden wie folgt aus dem Video generiert ffmpeg:

ffmpeg -i source.mp4 -ss 10:01.123 -to 10:03.321 frames/source_%03d.png 

Ich bin mir nicht wirklich sicher, wo ich die -colors 64Klausel setzen sollte. Soll ich es vor *.jpgoder nach dem Teil setzen? Oder sogar nach dem -ordered-dither o8x8,8,8,4Teil?

Danke für jede Hilfe. Ich bin ziemlich neu bei ImageMagick, also sei bitte vorsichtig :-)


Update 1:

Also habe ich herumgespielt und diese unintuitiven (für mich) Ergebnisse erhalten:

-delay 12 -colors 128 *.png -resize 640x640 -ordered-dither o8x8,8 -deconstruct +map \ -layers Optimize output_1.gif Result: 3.09 MB, Good quality  -delay 12 *.png -colors 128 -resize 640x640 -ordered-dither o8x8,8 -deconstruct +map \ -layers Optimize output_2.gif Result: 3.09 MB, Good quality  -delay 12 *.png -resize 640x640 -colors 128 -ordered-dither o8x8,8 -deconstruct +map \ -layers Optimize output_3.gif Result: 4.41 MB, Degraded quality  -delay 12 *.png -resize 640x640 -ordered-dither o8x8,8 -colors 128 -deconstruct +map \ -layers Optimize output_4.gif Result: 2.77 MB, Good quality  -delay 12 <individual .png followed by -colors 128 each> -resize 640x640 \ -ordered-dither o8x8,8 -colors 128 -deconstruct +map -layers Optimize output_5.gif Result: 3.09 MB, Slightly Better quality 

Kurz gesagt: Alle Kombinationen liefern eine wirklich gute Qualität, mit Ausnahme der Kombination Nr. 3, die nicht nur ein sichtbar verschlechtertes Ergebnis, sondern auch das größte Ergebnis liefert.

Das ist ziemlich unerwartet ... was denkst du: Wie konnte das Ergebnis so wild variieren?

0

1 Antwort auf die Frage

1
Jonno

Schauen Sie sich hier das Handbuch für ImageMagick an

Die Anatomie der Befehlszeile

Die ImageMagick-Befehlszeile besteht aus:

ein oder mehrere erforderliche Eingabedateinamen.

null, eine oder mehrere Bildeinstellungen.

null, ein oder mehrere Bildoperatoren.

null, ein oder mehrere Bildsequenzoperatoren.

null, ein oder mehrere Bildstapel.

Null oder ein Ausgabebild-Dateiname (erforderlich für Konvertieren, Zusammensetzen, Montieren, Vergleichen, Importieren, Erstellen)

In den folgenden Abschnitten finden Sie eine detaillierte Erläuterung der einzelnen Bestandteile der Befehlszeile.

Ob es zu wichtig ist, weiß ich nicht, aber das impliziert, dass Sie es als solches strukturieren würden:

convert *.png -size 640x640 -colors 64 -ordered-dither o8x8,8,8,4 +map -layers optimize output.gif 

Ich habe diesen Befehl getestet und es hat gut funktioniert, konvertiert 4x PNG-Dateien mit jeweils 6-7 MB in eine GIF von 5,2 MB.

Wie? Ich habe "-" für "-Schichten" eingefügt. Was ist auch die richtige Schreibweise, "Optimieren" oder "Optimieren"? Oder spielt es für dieses bestimmte Keyword keine Rolle? pepoluan vor 8 Jahren 0
Wie auch immer, ich danke Ihnen, dass Sie auf diesen Abschnitt "Anatomie" hingewiesen haben! Ich muss diese bestimmte Seite vermisst haben --__-- pepoluan vor 8 Jahren 0
@pepoluan Whoops, nicht sicher, warum ich dachte, du hättest es nicht getan, musst es falsch kopiert und eingefügt haben! Es tut uns leid! Normalerweise Kleinbuchstaben, es hängt jedoch von den Spezifikationen ab (textuell sind sie gleich, aber binäre Vergleiche würden fehlschlagen, daher möglichst gleich bleiben). Jonno vor 8 Jahren 1