Android GIF 编解码

  最近在研究GIF在Android上的实现,并有一些心得。现在分享出来,希望跟大家能一起实现。

  起初看到GIF在手机上的实现,是在iphone上的gif快手的一个应用,感觉还不错,也想在android上实现,后来去查了一下。原来Android上也有了,也叫GIF快手,下了一个,体验还不错的说。反编译出来(不好意思啦,你应该用混淆编译的嘛)。发现解码是用的java算法,但是编码是调用的jni。好吧,接下来就是Google了。

  关于gif的编解码还是有蛮多的,我找了一个java算法的,然后对应着gif快手的解码算法修改了下,因为java算法里用到了awt,所以在android上要修改。

  最后修改成功,大致的过程是:

  1.初始化GifDecoder。

  2.设置bitmap和每帧delay时间,

  3.开始decode,得到frameCount,

  4.通过handler设置delay,拿到每一帧的buf,然后重绘ondraw就ok了。效果还不错哦

  代码我就不贴了。有需要的点我qq找我要,

  至于gif的编码,蛮纠结的,我照着gif解码的demo来反推,到是能将3张图片加入到一个gif文件里,但是在显示的时候只显示第一张图片,有点郁闷,编码的java算法不能完全改成android的。所以会出这样的问题吧。

  好吧,既然不行,那就换别的办法吧,Google、看到了microsoft的.net类库的支持

  http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.gifbitmapdecoder.aspx

  哎。不适用,看到别人写的c算法,或者是java算法,也不是很适用,纠结啊。求高手,一起研究啊,我找了一些资料,可以一起研究,节约时间。

  如果找到合适的编码方式,我会及时的公布出来,有不对的地方也请大家指正。tks。

 source download


 

原文地址:https://www.cnblogs.com/stay/p/2139154.html