Как получить растровое изображение из SimpleDraweeView?

Я хочу получить Bitmap из SimpleDraweeView библиотеки Fresco и сохранить его на SD-карту. SimpleDraweeView является дочерним классом ImageView, поэтому он должен поддерживать getDrawable(), но вызов этого метода вызывает ClassCastException

BitmapDrawable bitmapDrawable = (BitmapDrawable) viewHolder.drawee.getDrawable();

ClassCastException: com.facebook.drawee.generic.RootDrawable cannot be cast to android.graphics.drawable.BitmapDrawable

Какой выход для этого?


person Jay Donga    schedule 30.01.2017    source источник
comment
Можете ли вы объяснить, что касается основной диаграммы на этой странице: frescolib.org/docs/intro -image-pipeline.html чего вы пытаетесь достичь.   -  person Morrison Chang    schedule 30.01.2017
comment
После рендеринга растрового изображения в SimpleDraweeView, что является последним этапом, я хочу извлечь изображение в представлении как растровое изображение.   -  person Jay Donga    schedule 30.01.2017
comment
Нашел этот вопрос SO stackoverflow.com/q/30751577/295004, и этот ответ выглядит многообещающе: stackoverflow.com/a/31769964/295004   -  person Morrison Chang    schedule 30.01.2017
comment
Спасибо Моррисон за ваши усилия. Я проверю это и дам вам знать.   -  person Jay Donga    schedule 30.01.2017


Ответы (1)


Мне помог ответ 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.

person Jay Donga    schedule 30.01.2017