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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章