Android平台上合成GIF
来源:互联网 发布:优化标题会降权吗 编辑:程序博客网 时间:2024/09/21 09:24
http://blog.leepood.com/the-android-gif-maker
最近做项目有个需求就是将若干张图片合成Gif动画,大家都知道在Android平台上目前是不支持Gif的,所以利用本地的Api是不可能达到目的的,于是上网查资料,得知用NDK可以达到目的OK,折腾一番搞定,下面分享下:
首先NDK的环境搭建我就不讲了,这些可以查网上的,首选去http://jiggawatt.org/badc0de/android/index.html#gifflen 下载gifflen的源码来编译。下载到源码之后我们要做的就是修改下方法名称,NDK里面书写方法的名称需同你native 类的包名相同,举个例子我的native方法类的完整路径是:com.leepood.gifmaker.GifUtil 那么我需要将下载回来的源码里面的jni call的方法名称改为以Java_com_leepood_gifmaker_GitUtil_开头,这样一切就OK拉,于是NDK编译得到libgifflen.so文件,于是在java里面调用,上我写的代码:
package com.leepood.gifmaker;import android.graphics.Bitmap;import android.util.Log;public class GifUtil {private final String TAG=this.getClass().getName();static{System.loadLibrary("gifflen");}/** * Init the gif file * @param gifName name * @param w width * @param h height * @param numColors colors * @param quality * @param frameDelay times * @return */public native int Init(String gifName, int w, int h, int numColors, int quality, int frameDelay);public native void Close();public native int AddFrame(int[] pixels);/** * encode the bitmaps to gif * @param fileName * @param bitmaps * @param delay */public void Encode(String fileName,Bitmap[] bitmaps,int delay){if(bitmaps==null||bitmaps.length==0){throw new NullPointerException("Bitmaps should have content!!!");}int width=bitmaps[0].getWidth();int height=bitmaps[0].getHeight();if(Init(fileName,width,height,256,100,delay)!=0){Log.e(TAG, "GifUtil init failed");return;}for(Bitmap bp:bitmaps){int pixels[]=new int[width*height];bp.getPixels(pixels, 0, width, 0, 0, width, height);AddFrame(pixels);}Close();}}
这样就行啦,呵呵,赶快去试试呗!
本文固定链接地址:
Android平台上合成GIF
- Android平台上合成GIF
- 在Android平台下合成Gif
- 【android】Gif合成
- android平台上的gif显示
- Android合成GIF图片JNI版
- Android合成GIF图片JNI版
- Android gif图片的解码与合成
- Android实现多张图片合成GIF
- 图片合成GIF
- GIF图的合成
- gif图片的合成
- 客户端合成gif
- android显示gif图片(上)
- 图片合成gif图 iOS
- Python2.7 图片合成gif
- Android上运行gif的类
- 如何在android上 使用gif图片
- Android图形显示系统——下层显示4:图层合成上(合成原理与3D合成)
- jQuery 控件事件的绑定和取消操作
- Android中Touch事件的处理逻辑
- ListActivity中的自定义列表配置选项『Android系列12』
- 面试时,如何向公司提问?
- Vim配置文件--vimrc 03.01版
- Android平台上合成GIF
- Filter 对未登录用户访问地址的控制
- JS获取GET参数
- 用maven部署java project(一)
- HDU 1026 Ignatius and the Princess I
- Asp.net 操作XML
- codeplex使用
- C# 文件下载四方法
- Debug依赖的CRT、MFC库、ATL库、OpenMP库文件