2010-07-22 11 views
13

Intentando reproducir GIF animados en Android aquí (ver Android: How do a display a large animated gif given a url?). No es nada suave. En Android 1.5, Movie.decodeStream()/decodeFile() devuelve un valor nulo. En Android 1.6, con los archivos GIF que tengo, devuelve una película de tamaño cero con duración cero, claramente inadecuada.Dividir GIF en marcos

La pregunta a la que se hace referencia sugiere dividir el GIF en cuadros (y luego renderizarlos). ¿Cómo exactamente lo logro, por favor?

EDITAR: intenté abrir uno de mis archivos GIF con GNU giflib en Windows. Se estranguló en el primer cuadro. El GIF está bien, todos los navegadores (excepto los de Android) lo muestran y lo animan bien.

EDIT2: trabajado con giflib 4.1.4. No estoy seguro de lo que estaba roto en 4.1.6, pero ahí lo tienes. El siguiente paso: compilar giflib para Android a través de NDK, de alguna manera integrarlo con la clase Bitmap.

EDIT3: giflib es. Conjuntamente con Bitmap.copyPixelsFromBuffer. Los colores están todos torcidos en este momento, pero el diseño básico parece viable.

Respuesta

1

giflib 4.1.4 y NDK. Debe resolver manualmente los colores de la paleta en el GIF para que coincida con uno de los formatos ARGBxxxx de Android, y luego pasar la matriz de píxeles a un objeto Bitmap a través del copyPixelsFromBuffer(). Si desea transparencia y/o animación, debe pasar por los bloques de extensión y buscar el que tiene el código 0xf9.

compartido mi código, junto con la orientación, aquí: http://rathertech.blogspot.com/2014/04/splitting-gif-into-frames-on-android.html

+0

¿Tiene un código de ejemplo, por casualidad? Si es así, por favor, publicarlo. –

+0

Es bastante largo. Podría enviar un correo electrónico. –

+0

tal vez podría publicar en pasteBin, o usando gitHub o en otro lugar? –