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
Android GIF 编解码相关推荐
- android 解码webp动画,android webp编解码详解
key words:android decode webp sample 当我敲下键盘的时候有种深深的耻辱感,看到android 4.0支持webp格式的图像,于是我狠命的找提供了什么样的api,nn ...
- zbar android解码错误,Android原生编解码接口 MediaCodec 之——踩坑
关键帧 MediaCodec 有两种方式触发输出关键帧,一是由配置时设置的 KEY_FRAME_RATE和KEY_I_FRAME_INTERVAL参数自动触发,二是运行过程当中经过 setParame ...
- android amr-wb 编解码
平台 PX30 + Android 9.0 + AndroidStudio 4.1.3 概述 在Android 平台上实现AMR-WB的编解码, 要求不高, JAVA也行, C/CPP也行, 可惜 ...
- Android图片编解码实现方案(Skia)
首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...
- Android原生编解码接口 MediaCodec 之——完全解析
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/gb702250823/article/ ...
- Android原生编解码接口MediaCodec详解
作者:躬行之 了解了音视频的相关知识,可以先阅读同系列文章: 音视频开发基础知识 音频帧.视频帧及其同步 Camera2.MediaCodec录制mp4 MediaCodec 是 Android 中的 ...
- android硬编解码MediaCodec
一 mediacodec简介 MediaCodec 类可以用来访问底层媒体编解码器,即编码器/解码器的组件. 它是 Android 底层多媒体支持架构的一部分(通常与 MediaExtractor,M ...
- Android硬编解码接口MediaCodec使用完全解析(一)
使用异步读取编码(解码)后的数据,效率会大增. 可以直接起一个线程不断地读. ------------------------------------------------------------- ...
- Android视频编解码之MediaCodec简单入门
本篇只是简单入门,后面会继续写文章详细讲解: 由于MediaCodec涉及内容众多,原本想一篇文章把所有内容概括,但是后来发现不太可能,限于自己能力,想要考虑全面太难,我也是刚开始学习需要借助网上的代 ...
最新文章
- android自定义控件绘制位置,Android自定义控件之——文字圆形边框(将文字绘制在圆中间)...
- 前端开发模式--MV*
- 文献记录(part7)--An Improved Biclustering Algorithm and Its Application to Gene Expression ...
- Batch_size问题
- android 怎么自定义任务栈,Android中的Activity详解--启动模式与任务栈
- 博士生想逃离科研,导师还要帮他吗?|Nature专访
- CNN(Convolutional Neural Network) 的基础
- 3D Slicer源代码编译与调试
- 【转】关于PHP的header(P3P: CP=CURa……)
- zabbix监控搭建以及客户端安装
- Visual Studio中工具--》选项--》源代码管理器--》插件选择说明
- java 图片水印旋转,Java实现 图片水印或者文字水印详解
- 计算机教室使用与管理制度,《计算机教室使用与管理制度》
- vue模板中写html,vue中template的三种写法示例
- Java -- Ajax异步访问数据库内容
- 语法制导翻译和中间代码生成
- 炸金花游戏(1)--炸金花游戏的模型设计和牌力评估
- IE浏览器对象不支持Blob属性或方法,IE浏览器不支持canvas toBlob()方法的Polyfill
- 博图程序需要手动同步_博图新手使用说明
- 全国专科计算机学院排名2015,2021全国专科学校排名 最新高职高专院校排行榜
热门文章
- iptables防火墙的连接状态
- pox 中 openflow.webservice 组建的学习与使用
- XenServer 6.5实战系列之四:XenServer 6.5 Installation
- centos7下使用yum安装mysql并创建用户,数据库以及设置远程访问
- 【Linux】ps命令
- 关于Oracle full outer join 的bug问题分析及处理
- Camel In Action 读书笔记 (1)
- CentOS 6.3编译安装Nginx1.2.2+MySQL5.5.25a+PHP5.4.5
- linux vi文本类常用命令
- 【LeetCode】排序