fresco Bitmap too large to be uploaded into a texture
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://stackoverflow.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);