2010-07-22 74 views
13

尝试在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拆分为帧

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

编辑:试图用Windows中的GNU giflib打开我的一个GIF。它在第一帧窒息。 GIF本身没问题,所有浏览器(保存Android的)都显示并动画效果很好。

EDIT2:与giflib一起工作4.1.4。不确定在4.1.6中破了什么,但你去了。下一步:通过NDK为Android构建giflib,以某种方式与Bitmap类集成。

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

回答

1

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

共享我的代码,指导一起,在这里:http://rathertech.blogspot.com/2014/04/splitting-gif-into-frames-on-android.html

+0

你有任何机会一个示例代码?如果是这样,请发布。 – 2013-07-18 21:37:53

+0

它相当长。我可以发电子邮件。 – 2013-07-18 21:44:51

+0

也许你可以发布在pasteBin上,或使用gitHub或其他地方? – 2013-07-18 22:18:31