2010-07-22 27 views
13

Cercando di riprodurre GIF animate su Android qui (vedere Android: How do a display a large animated gif given a url?). È tutto tranne che liscio. Su Android 1.5, Movie.decodeStream()/decodeFile() restituisce un valore nullo. Su Android 1.6, con i file GIF che ho, restituisce un film a dimensione zero con durata zero - chiaramente non adeguato.Split GIF in frame

La domanda di riferimento suggerisce di dividere la GIF in frame (e quindi renderli). Come esattamente lo realizzo, per favore?

EDIT: ho provato ad aprire una delle mie GIF con GNU giflib in Windows. Si è soffocato sul primo fotogramma. La stessa GIF va bene, tutti i browser (tranne Android) vengono visualizzati e animati bene.

EDIT2: ha funzionato con giflib 4.1.4. Non sono sicuro di cosa si è rotto in 4.1.6, ma ci vai. Passaggio successivo: crea giflib per Android tramite NDK, in qualche modo si integra con la classe Bitmap.

EDIT3: giflib lo è. In combinazione con Bitmap.copyPixelsFromBuffer. I colori sono tutti di traverso in questo momento, ma il design di base sembra fattibile.

risposta

1

giflib 4.1.4 e NDK. Devi risolvere manualmente i colori della palette nella GIF per abbinarli a uno dei formati ARGBxxxx di Android, quindi passare l'array di pixel a un oggetto Bitmap tramite copyPixelsFromBuffer(). Se vuoi trasparenza e/o animazione, devi passare attraverso i blocchi di estensione e cercare quello con il codice 0xf9.

in comune il mio codice, insieme ad una guida, qui: http://rathertech.blogspot.com/2014/04/splitting-gif-into-frames-on-android.html

+0

Hai un codice di esempio per caso? se è così, per favore postalo. –

+0

È piuttosto lungo. Potrei e-mail. –

+0

magari potresti postare su pasteBin, o usare gitHub o da qualche altra parte? –