android - 从 gif / 视频中保存位图
问题描述
我想保存 GIF 文件和视频文件的单个图像(位图)。我想要每个文件的 5 张图片。根据文件的长度(秒),图片要定时拍照,这样就有5张图片。我希望有人可以帮助我,谢谢!
解决方案
我用 Glide 找到了一个很好的解决方案(对于 gif 文件):
Glide.with(Activity.this)
.asGif()
.load(picturePath)
.into(new SimpleTarget<GifDrawable>() {
@Override
public void onResourceReady(@NonNull GifDrawable resource, @Nullable Transition<? super GifDrawable> transition) {
try {
Object GifState = resource.getConstantState();
Field frameLoader = GifState.getClass().getDeclaredField("frameLoader");
frameLoader.setAccessible(true);
Object gifFrameLoader = frameLoader.get(GifState);
Field gifDecoder = gifFrameLoader.getClass().getDeclaredField("gifDecoder");
gifDecoder.setAccessible(true);
StandardGifDecoder standardGifDecoder = (StandardGifDecoder) gifDecoder.get(gifFrameLoader);
for (int i = 0; i < standardGifDecoder.getFrameCount(); i++) {
standardGifDecoder.advance();
if (i == 4) {
bitmap1 = standardGifDecoder.getNextFrame();
} else if (i == standardGifDecoder.getFrameCount() / 3) {
bitmap2 = standardGifDecoder.getNextFrame();
} else if (i == standardGifDecoder.getFrameCount() / 2) {
bitmap3 = standardGifDecoder.getNextFrame();
} else if (i == standardGifDecoder.getFrameCount() - 4) {
bitmap4 = standardGifDecoder.getNextFrame();
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
推荐阅读
- php - 如何从 Laravel 前端应用程序中创建的表中处理/创建模型?
- javascript - Javascript 在通过 Pistache 加载的 HTML 页面中不起作用
- javascript - localStorage/sessionStorage 是否被视为 NoSQL 数据库?
- r - RcppArmadillo 和 shed_col()
- linux - 未找到解压签名
- python - __init__() 的参数太多
- gnuplot - 如何在 gnuplot 中用样条线绘制闭合多边形?
- javascript - 为什么 Swiper 中的 hashNavigation 组件会替换 URL 中的整个路径?
- scheme - 方案字典操作
- amazon-web-services - RDS 关闭连接太快