将GIF拆分成帧

时间:2010-07-22 19:37:24

标签: android

尝试在Android上播放动画GIF(请参阅Android: How do a display a large animated gif given a url?)。这不过是顺利的。在Android 1.5上,Movie.decodeStream()/ decodeFile()返回null。在Android 1.6上,使用我获得的GIF文件,它会返回零大小的电影,持续时间为零 - 显然不够。

引用的问题建议将GIF分割成帧(然后渲染这些)。我到底怎么做到这一点,好吗?

编辑:尝试在Windows中使用GNU giflib打开我的一个GIF。它在第一帧窒息。 GIF本身就可以了,所有浏览器(保存Android的)都可以显示并且可以很好地制作动画。

EDIT2:使用giflib 4.1.4。不确定4.1.6中的内容是什么,但是你去了。下一步:通过NDK为Android构建giflib,以某种方式与Bitmap类集成。

EDIT3:它是giflib。与Bitmap.copyPixelsFromBuffer结合使用。颜色现在都是歪斜的,但基本设计似乎可行。

1 个答案:

答案 0 :(得分:1)

giflib 4.1.4和NDK。您必须手动解析GIF中的调色板颜色以匹配Android的ARGBxxxx格式之一,然后通过Bitmap将像素阵列传递给copyPixelsFromBuffer()对象。如果你想要透明度和/或动画,你必须浏览扩展块并查找代码为0xf9的扩展块。

在此处共享我的代码以及指南:http://rathertech.blogspot.com/2014/04/splitting-gif-into-frames-on-android.html