Kacheln Sie animierte Gifs


10

Gibt es eine Möglichkeit, Imagemagic / Montage zu verwenden, um animierte Gifs mit Schleifen (gemischt mit nicht animierten) zu kacheln?

Das heißt, ich möchte die Animationen im Raum und nicht in der Zeit verketten. Mir ist klar, dass die Anzahl der Frames und ihre Dauer in der Animation es möglicherweise unmöglich machen, zwei Animationen sauber zu kombinieren. Aber ich bin damit einverstanden, dass das Programm Annäherungen und Vermutungen anstellt und Frames erweitert / wiederholt, solange alle Frames auf irgendeine Weise vorhanden sind.

ich habe es versucht

convert *.gif -append output.gif

und

montage *.gif -mode concatenate -tile x1 output.gif

Beide behandeln die animierten Gifs jedoch als mehrere einzelne nicht animierte.

Ich nehme an, ich könnte wahrscheinlich ein Skript schreiben, um die animierten durch Frames zu trennen, kürzere Schleifen nach Bedarf wiederholen / erweitern, um der längsten Schleife zu entsprechen, die nicht animierten Gifs wiederholen, da sich so viele Frames in der längsten animierten befinden, die entsprechenden Frames zusammenfügen in einzelne große Frames mit -appendund kombinieren Sie diese großen Frames dann zu einem großen GIF. Aber ich möchte das Rad nicht neu erfinden, wenn dies bereits durch einen einfachen Befehl möglich ist.

Ich bin natürlich offen für andere kostenlose Optionen als imagemagick.



2
Ich werde das nehmen, da es wahrscheinlich nicht beabsichtigt war; als ernsthafter Kommentar. Ja, ich möchte GIFs kacheln. Aber dauerhaft, nicht in HTML. Danke für den Link. Ich werde dieses spezielle GIF für die spätere Verwendung speichern.
Tsbertalan

1
@tsbertalan Hast du das irgendwann herausgefunden?
Seb Barre

Antworten:


1

Es hört sich so an, als ob Sie mehrere Animationen im Laufe der Zeit abgleichen möchten, aber dafür ist ein Programm erforderlich, um jedes Bild und seine Verzögerung zu lesen und dieses Bild dann mit einer periodischen Frequenz auszugeben, bis die Verzögerung erreicht ist. Beispiel: 1 Bild, Verzögerung von 1 Sekunde und Ihre 'Frequenz' beträgt 100 ms. Sie möchten also 10 Bilder bei 100 ms ausschreiben? Und dann in eine lineare Montage umgewandelt?

Das würde ein Programm oder ein umfangreiches Skript erfordern, um diese Art der Verarbeitung durchzuführen, und Sie müssten Ihre "Frequenz" definieren (100 ms hier).

Aber das funktioniert gut: (Gifsicle ist ein Paket, Montage ist Teil des Imagemagick-Pakets)

gifsicle --unoptimize cool_animation.gif | \
  montage -tile x1 - linear_frames.png

(Zeile zur besseren Lesbarkeit unterbrochen)

Die erste Zeile zerlegt das eingehende GIF in einzelne Frames (zu stdout), wobei jedoch die Ebenen ausgefüllt sind. Anfangs würde es ohne die Option --unoptimize den ersten Frame geben, aber die nachfolgenden Frames enthielten nur das, was sich jedes Mal geändert hat. Gemacht für seltsame Montagen!

In der zweiten Zeile wird die lineare Ausgabe erstellt, wobei jedes Einzelbild (von stdin) in der von Ihnen angegebenen Reihenfolge angeordnet wird. 'x1', um sie entlang einer horizontalen Linie anzuordnen.

Sie können den einzelnen Dateinamen (cool_animation.gif) durch mehrere oder sogar einen Platzhalter * .gif ersetzen.

Ich bin mir nicht sicher, ob Sie danach suchen.


Wenn es gifsicle --colors=255 DATA.gif | gifsicle --unoptimize | montage -tile x1 - linear_frames.pngfür das Testbild von Ƭᴇcʜιᴇ007 geändert wird, erhalte ich imgur.com/a/Likr9 ; nicht genau das, wonach ich suche. Ich kann mich nicht an den ursprünglichen Zweck erinnern. Ich habe wahrscheinlich gerade ein Skript geschrieben, um alles explizit herauszubrechen.
Tsbertalan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.