fresco Bitmap too large to be uploaded into a texture

时间:2023-12-28 18:35:26

fresco加载图片方法

布局文件引入 xmlns:fresco="http://schemas.android.com/apk/res-auto"

    <com.facebook.drawee.view.SimpleDraweeView
android:id="@id/img_icon"
android:layout_width="42.0dip"
android:layout_height="42.0dip"
android:layout_marginLeft="12.0dip"
android:layout_marginTop="20.0dip"
fresco:roundAsCircle="true"
fresco:failureImage="@drawable/my_face"
fresco:failureImageScaleType="centerInside"/>

加载图片方法

m.SimpleDraweeView.setImageURI(Uri.parse(imageUrl));

加载网络图片一切正常(网络图片测试没有1M以上的 都是通过七牛云存储裁剪后显示的)
当获取本地手机相册的时候 提示Bitmap too large to be uploaded into a texture 
fresco默认不是打印Log的 打开方式如下
Set<RequestListener> requestListeners = new HashSet<>();
requestListeners.add(new RequestLoggingListener());
ImagePipelineConfig config = ImagePipelineConfig.newBuilder(appContext)
// other setters
.setRequestListeners(requestListeners)
.build();
Fresco.initialize(appContext, config);
FLog.setMinimumLoggingLevel(FLog.VERBOSE);

搜索  Bitmap too large to be uploaded into a texture  关键字网上说在 application 加入android:hardwareAccelerated="false" 关闭硬件加速,个人感觉既然作为最火的fresco一定有解决办法于是在官网找到了

http://www.fresco-cn.org/docs/requesting-multiple-images.html

有这么一个属性 .setLocalThumbnailPreviewsEnabled(true)

本功能仅支持本地URI,并且是JPEG图片格式

如果本地JPEG图,有EXIF的缩略图,image pipeline 可以立刻返回它作为一个缩略图。Drawee 会先显示缩略图,完整的清晰大图在 decode 完之后再显示。

我的理解是fresco去获取相册的缩略图经测试还是不行依然不显示。

我又换了关键字搜索 在日志前面加入了fresco 变成 fresco Bitmap too large to be uploaded into a texture

在结果中第一条记录就是http://*.com/questions/33676807/fresco-bitmap-too-large-to-be-uploaded-into-a-texture

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(imageUrl))
.setProgressiveRenderingEnabled(true)
.setAutoRotateEnabled(true)
.setLocalThumbnailPreviewsEnabled(true)
.setResizeOptions(new ResizeOptions(view.getLayoutParams().width, view.getLayoutParams().height))
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setOldController(view.getController())
.setAutoPlayAnimations(true).build();
view.setController(controller);

运行测试显示正常 大功告成^0^

---------------------------------------------------分割线----------------------------------------------------------------
在次编辑 以下代码也可以实现加载本地相册,上面代码有时候有错误 无法获取宽和高,除非指定
ImagePipelineConfig config = ImagePipelineConfig.newBuilder(getApplicationContext())
.setDownsampleEnabled(true)
.build();
Fresco.initialize(getApplicationContext(), config);