我正在使用Fresco库。
我无法在Fresco文档中找到任何相关信息, 如何从Fresco的磁盘缓存中获取图像文件?
答案 0 :(得分:5)
如果图像已在缓存中下载,您可以这样做:
<
<xsl:if test="$actionCode ='CREATE'">
cre
</xsl:if>
<xsl:if test="$actionCode ='UPDATE'">
upd
</xsl:if>
ateStudent>
答案 1 :(得分:2)
我希望这会有所帮助
点击此链接上的Plamenkos答案.. https://github.com/facebook/fresco/issues/80
如果您向管道询问编码图像,并使用ImageRequestBuilder.setLowestPermittedRequestLevel指定DISK_CACHE,则管道将返回JPEG字节(如果图像在磁盘缓存中找到,或者如果找不到图像则为null) -fetch必须要执行。
我希望我没有误解你的问题并提供错误的答案。
答案 2 :(得分:2)
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(YourImageUrl))
.setLowestPermittedRequestLevel(ImageRequest.RequestLevel.DISK_CACHE)
.setResizeOptions(new ResizeOptions(width, width))
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setOldController(YourImageView.getController())
.setImageRequest(request)
.build();
此代码:
.setLowestPermittedRequestLevel(ImageRequest.RequestLevel.DISK_CACHE)
将使壁画首先从磁盘上获取您的图像,然后是网络。
答案 3 :(得分:1)
我认为你永远不应该试图获得Fresco Cache名称因为缓存是内部工具。
但是如果你想知道图像是否已被缓存,你可以使用它:
private boolean isDownloaded(Uri loadUri) {
if (loadUri == null) {
return false;
}
ImageRequest imageRequest = ImageRequest.fromUri(loadUri);
CacheKey cacheKey = DefaultCacheKeyFactory.getInstance()
.getEncodedCacheKey(imageRequest);
return ImagePipelineFactory.getInstance()
.getMainDiskStorageCache().hasKey(cacheKey);
}
此方法返回速度非常快,您可以在UI线程中使用它。
答案 4 :(得分:0)
private fun getGitFile(gifUrl: String): File {
val request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(gifUrl))
.setLowestPermittedRequestLevel(ImageRequest.RequestLevel.DISK_CACHE)
.build()
val cacheKey = DefaultCacheKeyFactory.getInstance()
.getEncodedCacheKey(request, null)
val resource = ImagePipelineFactory.getInstance()
.mainFileCache.getResource(cacheKey)
val file = (resource as FileBinaryResource).file
return file
}