gpt4 book ai didi

java - 从 fresco 获取 bitmapdrawable

转载 作者:太空狗 更新时间:2023-10-29 13:56:56 25 4
gpt4 key购买 nike

我正在尝试从 SimpleDraweeView 获取位图。

我已经用 uri 图像设置了我的 SimpleDraweeView:

final Uri uri = new Uri.Builder()
.scheme(UriUtil.LOCAL_RESOURCE_SCHEME)
.path(returnUri.getPath())
.build();
profileImage.setImageURI(returnUri);

现在我正在尝试将图像保存在手机的内存(存储)中。

 Bitmap b = ((BitmapDrawable) profileImage.getDrawable()).getBitmap(); //  ImageDiskHelper.drawableToBitmap(profileImage.getDrawable().get);
try {
ImageDiskHelper.saveToInternalStorage(b, "MyActualProfileImage");
} catch(Exception c){ }

但是如果我使用上面的代码,我会得到:com.facebook.drawee.generic.RootDrawable cannot be cast to android.graphics.drawable.BitmapDrawable

我将 profileImage.getDrawable 转换为位图图像是这样的:empty image

我正在尝试获取由 SimpleDraweeView 显示的位图

最佳答案

获取位图可绘制对象不是一个好主意,因为 Fresco 的底层实现将来可能会发生变化,这会破坏您的代码。

我猜你真的只是想要原始编码的图像字节(这样你就不必重新编码图像)。您可以使用

获取编码的图像字节

DataSource<CloseableReference<PooledByteBuffer>>
dataSource = imagePipeline.fetchEncodedImage(imageRequest, callerContext);

因为你之前已经获取了图像,它应该立即可用,你可以做类似的事情

try {
CloseableReference<PooledByteBuffer> encodedImage = dataSource.getResult();
if (imageReference != null) {
try {
// Do something with the encoded image, but do not keep the reference to it!
// The image may get recycled as soon as the reference gets closed below.
} finally {
CloseableReference.closeSafely(encodedImage);
}
} else {
// cache miss
...
}
} finally {
dataSource.close();
}

不要忘记关闭引用以免内存泄漏。您可以找到更多信息here .

关于java - 从 fresco 获取 bitmapdrawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38754327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com