【发布时间】:2019-07-17 11:31:50
【问题描述】:
所以基本上我想访问加载到SimpleDraweeView 中的图像或 Gif 的文件/ByteArray。当 Fresco 从 url 下载图像时,我想将该图像保存在我的数据库中以供将来访问(以帮助减少数据使用),因为这些图像不会更改。这样,下次我想将图像加载到SimpleDraweeView 时,我会加载本地媒体,无需从 url 再次下载。
在向Fresco.newDraweeControllerBuilder 添加侦听器后,我尝试了几种方法,onFinalImageSet 上我是:
1- 尝试从 Fresco 使用的缓存中访问图像/gif 的 File 以获取它的 ByteArray,但是,我总是从 ImagePipelineFactory 获得 hasKey() = False:
val imageRequest = ImageRequest.fromUri(mediaUrl)
val cacheKey = DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(imageRequest, null)
if(ImagePipelineFactory.getInstance().mainFileCache.hasKey(cacheKey)) {
val resource = ImagePipelineFactory.getInstance().mainFileCache.getResource(cacheKey)
val file = (resource as FileBinaryResource).file
}else if (ImagePipelineFactory.getInstance().smallImageFileCache.hasKey(cacheKey)){
val resource = ImagePipelineFactory.getInstance().mainFileCache.getResource(cacheKey)
val file = (resource as FileBinaryResource).file
}
2- 尝试从imageInfo(作为CloseableStaticBitmap)或animatable(作为CloseableAnimateImage)获取位图但是如果我想将动画转换为CloseableAnimateImage,我会得到一个编译错误“未解决的参考:CloseableAnimateImage”。然后的想法是从位图中获取 ByteArray 并保存它。不过,我真的很想得到(1)的方法。
关于如何获取缓存文件的任何想法?提前谢谢!
【问题讨论】:
-
你应该使用库 Glide/Picasso
-
@LakhwinderSingh fab... 代码建议?
-
对于 Glide 还是 Picasso?
-
我们试试毕加索