Разделить GIF на кадры - PullRequest
14 голосов
/ 22 июля 2010

Попытка воспроизвести анимированные GIF-файлы на Android здесь (см. Android: как отобразить большой анимированный GIF-файл с указанием URL-адреса? ). Это совсем не гладко. На Android 1.5 Movie.decodeStream () / decodeFile () возвращает ноль. На Android 1.6, с имеющимися у меня GIF-файлами, он возвращает фильм нулевого размера с нулевой продолжительностью - явно недостаточно.

Упомянутый вопрос предлагает разбить GIF на фреймы (а затем отрендерить их). Как именно я могу это сделать, пожалуйста?

РЕДАКТИРОВАТЬ: попытался открыть один из моих GIF с GNU giflib в Windows. Он подавился самым первым кадром. С GIF все в порядке, все браузеры (кроме Android) отображают и анимируют его нормально.

EDIT2: работал с giflib 4.1.4. Не уверен, что было сломано в 4.1.6, но вы идете. Следующий шаг: собрать giflib для Android через NDK, как-то интегрировать с классом Bitmap.

РЕДАКТИРОВАТЬ3: giflib это. В сочетании с Bitmap.copyPixelsFromBuffer. Цвета сейчас все кривые, но базовый дизайн кажется работоспособным.

1 Ответ

1 голос
/ 27 июля 2010

giflib 4.1.4 и NDK.Необходимо вручную разрешить цвета палитры в GIF, чтобы они соответствовали одному из форматов Android ARGBxxxx, а затем передать массив пикселей объекту Bitmap через copyPixelsFromBuffer().Если вам нужна прозрачность и / или анимация, вам нужно пройти через блоки расширения и найти блок с кодом 0xf9.

Поделился моим кодом вместе с руководством, здесь: http://rathertech.blogspot.com/2014/04/splitting-gif-into-frames-on-android.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...