Получить список <Bitmap>из GIF - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь преобразовать GIF в список, чтобы внести некоторые изменения в каждый кадр.

Я пытался использовать https://gist.github.com/devunwired/4479231, который работал, но не с оптимизированным GIF.

Я нашел библиотеку Glide, которая позволяет манипулировать GIF-файлами.

Я попробовал приведенный ниже код, но в отладке увидел, что никогда не захожу на onRessourceReady, поэтому этот метод не помогает мне получить List.

        DrawableRequestBuilder builder = Glide.with(this).load("path");
        builder.listener(new RequestListener<String, GlideDrawable>() {
            @Override
            public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                return false;
            }

            @Override
            public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                if (resource.isAnimated()) {
                    target.onResourceReady(new GlideBitmapDrawable(null, ((GifDrawable) resource).getFirstFrame()), null);
                    GifDrawable gd = (GifDrawable) resource;
                    Bitmap b = gd.getDecoder().getNextFrame();
                }
                return true;
            }
        });
        builder.into(new ImageView(this));

Я искал StreamGifDecoder из Glide, но я не понимаю, как использовать / передавать аргументы, и не нашел никакого образца ...

StreamGifDecoder(List<ImageHeaderParser> parsers, ResourceDecoder<ByteBuffer,GifDrawable> byteBufferDecoder, ArrayPool byteArrayPool)

https://bumptech.github.io/glide/javadocs/420/com/bumptech/glide/load/resource/gif/StreamGifDecoder.html

Мне не нужно делать это с Glide, поэтому, если вы знаете какую-либо другую библиотеку, я тоже буду признателен! Спасибо!

...