频道栏目
首页 > 资讯 > Android > 正文

android中使用android-gif-drawable实现解析gif图片的每帧图片

18-07-21        来源:[db:作者]  
收藏   我要投稿

hi,大家好:

好久没有和大家见面了,因为各方面原因好久没有更新blog,不过接下来我可能会有更多的时间来写blog,希望可以给 大家带来一些有用的知识点,可以帮助大家。

今天要介绍的是我们经常使用到的gif图片的每帧解析,即给一个gif文件,可以在android代码种获取gif的总帧数信息及每帧图片。

下面就实现一个解析一张gif图片,获取每张图片的bitmap

因为gif如果要自身实现解析可能稍微困难一些,而且稳定性等也不一定好,所以我们采用github评分最高的一个开源库android-gif-drawable实现

使用开源库:android-gif-drawable

网上介绍这个开源库的文章其实大部分都停留在怎么使用它来直接在ImageView这控件进行动画显示就ok,几乎没有写怎么使用android-gif-drawable来解析出gif文件的每一帧图片的文章。那如果我们真的有这个想获取每帧图片获取其中的若干帧呢?

1、首先在我们的gradle文件种引入这个第三方库:

 'pl.droidsonroids.gif:android-gif-drawable:1.2.12'

2、写一个GifUtil类

主要分为2步,

第一步获取gif文件含有的总帧数 :使用GifDrawable 的getNumberOfFrames();既可以获取gif的总帧数

第二步在获取gif总帧数后,如果我们要获取gif某一帧的Bitmap:使用GifDrawble 的seekToFrameAndGet(index)方法,index就是

需要获取的第多少帧的index

有了以上2个方法,我们是不是就可以很快的获取gif具体某一帧的Bitmap了啊

贴代码:

package com.android.unokiwi.util;

import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;

import java.util.ArrayList;
import java.util.HashMap;

import pl.droidsonroids.gif.GifDrawable;

/**
 * Created by Administrator on 2018/7/8.
 */
public static Bitmap getBitmapArrayByGif(Context context, String assertPath, int index) {
 try {
  ArrayList list = new ArrayList<>();
  GifDrawable gifFromAssets = new GifDrawable(context.getAssets(), assertPath);//代表android中assert的gif文件名
  int totalCount = gifFromAssets.getNumberOfFrames();
  if (totalCount < index) {
index = totalCount - 1;
  }
  return gifFromAssets.seekToFrameAndGet(index);
 } catch (Exception e) {
  return null;
 }

好了大概就是上面写的,很简单代码,希望对有这个业务需求的人一点帮助

相关TAG标签
上一篇:如何像顶级球队一样抵御DDoS?
下一篇:JS中表单元素获取的代码实现
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站