如何从 SimpleDraweeView 获取位图?
How to get Bitmap from SimpleDraweeView?
我想从 Fresco 库的 SimpleDraweeView
中获取 Bitmap
,并将其保存到 SD 卡中。
SimpleDraweeView
是 ImageView
的子 class 所以它应该支持 getDrawable()
但是调用这个方法会抛出 ClassCastException
BitmapDrawable bitmapDrawable = (BitmapDrawable) viewHolder.drawee.getDrawable();
ClassCastException: com.facebook.drawee.generic.RootDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
这有什么出路?
莫里森提到的s1rius的回答对我有帮助。这是我使用的代码。
ImageRequest downloadRequest = ImageRequest.fromUri(uri);
CacheKey cacheKey = DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(downloadRequest, context);
if (ImagePipelineFactory.getInstance().getMainFileCache().hasKey(cacheKey)) {
BinaryResource resource = ImagePipelineFactory.getInstance().getMainFileCache().getResource(cacheKey);
File cacheFile = ((FileBinaryResource) resource).getFile();
File savedImageFile = new File(Constants.APP_PATH_SAVED_QUOTES, "M1iS1" + "_" + currentPosition + ".jpg");
}
然后我将cacheFile
复制到savedImageFile
。
我想从 Fresco 库的 SimpleDraweeView
中获取 Bitmap
,并将其保存到 SD 卡中。
SimpleDraweeView
是 ImageView
的子 class 所以它应该支持 getDrawable()
但是调用这个方法会抛出 ClassCastException
BitmapDrawable bitmapDrawable = (BitmapDrawable) viewHolder.drawee.getDrawable();
ClassCastException: com.facebook.drawee.generic.RootDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
这有什么出路?
莫里森提到的s1rius的回答对我有帮助。这是我使用的代码。
ImageRequest downloadRequest = ImageRequest.fromUri(uri);
CacheKey cacheKey = DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(downloadRequest, context);
if (ImagePipelineFactory.getInstance().getMainFileCache().hasKey(cacheKey)) {
BinaryResource resource = ImagePipelineFactory.getInstance().getMainFileCache().getResource(cacheKey);
File cacheFile = ((FileBinaryResource) resource).getFile();
File savedImageFile = new File(Constants.APP_PATH_SAVED_QUOTES, "M1iS1" + "_" + currentPosition + ".jpg");
}
然后我将cacheFile
复制到savedImageFile
。