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);


posted on 2016-08-10 01:25  freexiaoyu  阅读(1124)  评论(0编辑  收藏  举报