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

本文介绍如何使用android-gif-drawable库解析GIF图片,获取其总帧数及每帧Bitmap。通过简单的代码示例,展示如何实现GIF图片的逐帧读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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<Bitmap> 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;
    }

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

欢迎大家转载,你的鼓励,才会让我给大家越来越多的干货内容

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值