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

 

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