我正在尝试将GIF转换为List,以便在每个帧上进行一些修改。
我尝试使用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));
我在寻找Glide的StreamGifDecoder,但我不了解如何使用/传递参数,也找不到任何示例...
StreamGifDecoder(List<ImageHeaderParser> parsers, ResourceDecoder<ByteBuffer,GifDrawable> byteBufferDecoder, ArrayPool byteArrayPool)
我不需要使用Glide,所以如果您知道任何其他库,我也将不胜感激!谢谢!