Ich möchte die Größe einer solchen animierten GIF-Datei ändern
In diesem convert do.gif -resize 24x24\! do-24.gif
Fall wird die Größe in do-24.gif geändert, aber nicht animiert
Wie kann man die Größe richtig ändern, um die gleiche Animation zu erhalten?
imagemagick
zuba
quelle
quelle
-coalesce
"Erzeugt an jedem Punkt eine vollständige Ansicht der Animation, ein bisschen wie ein echter Filmstreifen, anstatt einer Animationssequenz. Eine solche Sequenz, die als" Coalesced Animation "bezeichnet wird, ist viel einfacher zu studieren, zu bearbeiten, zu modifizieren und neu zu optimieren."gifsicle --resize 24x24 > do-24.gif
kann auch dazu-coalesce
+-deconstruct
Danach
-coalesce
möchten Sie wahrscheinlich Folgendes hinzufügen-deconstruct
:Die Hauptursache für das Problem ist, dass Ihr Eingabe-GIF ordnungsgemäß minimiert wurde: Mit GIF kann der nächste Frame nur das geänderte Rechteck des vorherigen Frame mit einem Versatz sein.
-coalesce
Dann werden alle Frames auf die ursprüngliche Größe vergrößert, wodurch die Größenänderung funktioniert. Die Frames werden jedoch nicht erneut komprimiert, da Ihr Eingabebild dies-deconstruct
erfordert.Verwenden der Testdaten aus dieser Antwort: Wie erstelle ich ein animiertes GIF aus Standbildern (vorzugsweise mit der Befehlszeile)? wir können dies deutlich sehen mit
identify
:out.gif
out-coalesce.gif
out-deconstruct.gif
Zuerst sehen wir, wie man eine Datei eingibt, die
out-convert.gif
tatsächlich komprimiert wurde, da Frame 2 nur516x516
versetzt ist252+257
, während Frame 1 in voller Größe ist1024x1024
.Dann, wenn wir die drei Umrechnungen vergleichen:
out.gif
: Alle Frames sind256x256
größer oder größer und haben eine Größe von ca. 5 MB. Warum?Optisch falsch, da diese ungefähren
256x256
Frames einen Offset ungleich Null haben, z. B.125+128
für Frame 2!out-coalesce.gif
: Alle Bilder sind256x256
und haben den richtigen Versatz0+0
.Die Ausgabe sieht visuell korrekt aus, aber die Ausgabedatei hat eine Größe von 2,0 MiB und ist größer als
out-deconstruct.gif
out-deconstruct.gif
: komprimierte Bilder, endgültige Ausgabegröße 1,9 MiB.Nicht wesentlich kleiner als
out-coalesce.gif
, aber ich denke, das liegt nur daran, dass der schwarze Untergrund wirklich gut komprimiert wird und im Allgemeinen sehr bedeutend sein könnte.ffmpeg und Gifsicle
Ich habe auch die folgenden Befehle ausprobiert:
und beide erzeugten eine noch kleinere, korrekt aussehende 1,5-MiB-Ausgabe.
Siehe auch: Wie erstelle ich ein animiertes GIF aus Standbildern (vorzugsweise mit der Befehlszeile)?
TODO: Warum können sie es kleiner machen als
convert
? Wählen sie einfach besser minimalere Diff-Rechtecke oder etwas anderes aus?Getestet in Ubuntu 18.10, ffpmeg 4.0.2-2, ImageMagick 6.9.10-8.
quelle
Ich habe nach einer imagemagick-Lösung gesucht, wie ich sie kenne, aber am Ende bin ich dem Vorschlag von @ sam gefolgt
gifsicle
. Es tat genau das, was ich wollte, kein Ärger.Kann die resultierende Dateigröße auf so viele Arten optimieren, aber ich habe nur die Größe und die Anzahl der Farben reduziert. Lief wie am Schnürchen:
quelle