Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Animierte GIFs auflösen (https://www.delphipraxis.net/210134-animierte-gifs-aufloesen.html)

DBR 5. Mär 2022 15:57

Animierte GIFs auflösen
 
Hallo Leute!

Ich möchte animierte Gifs als Einzelbilder speichern. Das gelingt mir auch soweit ganz gut. Aber wenn ein Gif APNG-Frames enthält, scheitere ich. Hat jemand eine Ahnung, wie ich vorgehen muss?

Danke im Voraus!
DBR

Redeemer 6. Mär 2022 00:16

AW: Animierte GIFs auflösen
 
Ein GIF mit APNG-Frames? Was?
Es gibt doch nur entweder GIF oder APNG.

Bei APNG kannst du durch die Chunks iterieren.
Der erste Chunk ist der IHDR-Chunk. Den solltest du aufbewahren. Ebenso PLTE falls vorhanden.
Dann iterierst du weiter durch die Datei. Für jeden Frame speicherst du aufeinanderfolgende IDAT und fdAT (aufeinanderfolgend, weil sie (unnötigerweise) in Blöcke aufgeteilt worden sein können) zusammen mit dem Header und den zuvor aufgebewahrten IHDR und PLTE ab. Bei fdAT musst du im IHDR die Breite und Höhe ersetzen, und vom fdAT die Sequenznummer überspringen. Die Breite und Höhe eines Frames findest du vom voransteheden fcTL-Chunk. Abschließend noch ein IEND-Chunk. Zudem musst du die Chunks-CRCs neu berechnen.

Beachte, dass APNGs keine vollen Frames speichern müssen und das oben beschriebene Vorgehen für volle Frames gedacht ist. Du kannst die vollen Frames selbst aus den wie oben beschrieben erstellten Einzelbildern erstellen. Es gibt verschiedene Zeichen- und Reset-Modi, die du dabei beachten musst, und die im fcTL-Chunk stehen. Du wirst mindestens einen Alpha-Blending-Algorithmus brauchen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz