2010-07-22 12 views
13

Versuchen, animierte GIFs auf Android hier zu spielen (siehe Android: How do a display a large animated gif given a url?). Es ist alles andere als glatt. Unter Android 1.5 gibt Movie.codecodeStream()/decodeFile() eine Null zurück. Auf Android 1.6, mit den GIF-Dateien, die ich habe, gibt es einen Film von null Größe mit Null-Dauer - eindeutig nicht ausreichend.Split GIF in Frames

Die referenzierte Frage schlägt vor, die GIF in Rahmen aufzuteilen (und diese dann zu rendern). Wie genau erreiche ich das bitte?

EDIT: versucht, eines meiner GIFs mit GNU giflib in Windows zu öffnen. Es erstickte am ersten Frame. Das GIF selbst ist in Ordnung, alle Browser (außer Android) zeigen an und animieren es gut.

EDIT2: arbeitete mit giflib 4.1.4. Nicht sicher, was in 4.1.6 gebrochen war, aber da gehst du. Nächster Schritt: Build giflib für Android über NDK, irgendwie mit der Bitmap-Klasse integrieren.

EDIT3: giflib ist es. In Verbindung mit Bitmap.copyPixelsFromBuffer. Die Farben sind alle gerade schief, aber das grundlegende Design scheint praktikabel.

Antwort

1

giflib 4.1.4 und NDK. Sie müssen die Palettenfarben im GIF manuell auflösen, um sie an eines der ARGBxxxx-Formate von Android anzupassen, und dann das Pixel-Array an ein Bitmap-Objekt über copyPixelsFromBuffer() übergeben. Wenn Sie Transparenz und/oder Animation wünschen, müssen Sie Erweiterungsblöcke durchlaufen und nach dem mit Code 0xf9 suchen.

Gemeinsamer meinen Code, zusammen mit Führung, hier: http://rathertech.blogspot.com/2014/04/splitting-gif-into-frames-on-android.html

+0

haben Sie einen Beispielcode durch Zufall? Wenn ja, bitte posten Sie es. –

+0

Es ist ziemlich lang. Ich könnte per E-Mail. –

+0

vielleicht könnten Sie auf pasteBin, oder mit gitHub oder woanders posten? –

Verwandte Themen