Android获取Gif图片第一帧

现在很多App内有播放Gif图片的功能,这些Gif图片一般都是在点击或者滑动到它后才会开始加载播放,所以我们需要在一开始只显示Gif图片的第一帧,那么如何获取呢?

1、让后台返回Gif的第一帧图片

2、自己针对Gif获取它的第一帧图片

第二种方法的代码如下

/**
     * 获取Gif图片第一帧
     *
     * @param url
     * @return
     */
public static void getGifFirstFrame(String url, OnGifListener listener) {
        mGifFixThreadPool.execute(() -> {
            HttpURLConnection connection;
            try {
                connection = (HttpURLConnection) new URL(url).openConnection();
                InputStream inputStream = connection.getInputStream();
                Movie gif = Movie.decodeStream(inputStream);
                Bitmap firstFrame = Bitmap.createBitmap(gif.width(), gif.height(), Bitmap.Config.ARGB_8888);
                Canvas canvas = new Canvas(firstFrame);
                gif.draw(canvas, 0, 0);
                canvas.save();
                mMainHandler.post(() -> {
                    listener.onFirstFrame(firstFrame);
                    listener.onGifSize(gif.width(), gif.height());
                });
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
    }

public interface OnGifListener {

        void onGifSize(int width, int height);

        void onFirstFrame(Bitmap bitmap);
    }

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值