Bitmap too large to be uploaded into a texture

从手机相册里面显示图片,但是发现有的图片能显示有的图片不能显示,路径都是对的,程序也没提示任何错误。

后来通过看日志发现error message: Bitmap too large to be uploaded into a texture (4208x3120, max=4096x4096):

经过查找资料是因为当开启硬件加速的时候,GPU对于openglRender 有一个限制,这个不同的手机会有不同的限制。

简单说就是硬件加速的时候,对图片的大小有限制。不同设备可能有不同的最大值。这个问题悲催的地方是,程序貌似没有捕获到这个exception, 结果是程序也不报错,图片也显示不出来。

一个解决的方法是禁止硬件加速

<application android:hardwareAccelerated="false" ...>

    /**
     * 把uri 转换为 bitmap          注意要关闭硬件加速!!否则会因为图片超大而不显示
     * @param mContext
     * @param mUri
     * @return
     */
    public static  Bitmap readBitmapUri(Context mContext,Uri mUri) {
        ContentResolver contentProvider = mContext.getContentResolver();
        Bitmap bmp = null;
        try {
            bmp = BitmapFactory.decodeStream(contentProvider.openInputStream(mUri));

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return bmp;

    }

  

时间: 2024-10-14 11:47:39

Bitmap too large to be uploaded into a texture的相关文章

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" andro

Bitmap too large to be uploaded into a texture exception

Bitmap too large to be uploaded into a texture exception 图片太大无法显示. 硬件加速中 OpenGL对于内存是有限制的 解决方式1: 禁用硬件加速 <application android:hardwareAccelerated="false" ...> 解决方式2:比较好的解决方法是类似google map的实现:将图片分成不同的块,每次加载需要的块.android提供了一个方法: http://developer

Shape path too large to be rendered into a texture

Shape path too large to be rendered into a texture (747x8294, max=8192x8192) 图像显示的时候出现该问题,经分析是由于开启硬件加速导致加载的path大小被限制. 问题出现场景: 从相册或者本地选择图片,在gridView中展示.别的页面中可以使用类似图片浏览工具查看所有展示的图片. 当我的图片浏览页面中,加载所有的图片,当加载到大图片时候,出现OOM和 Bitmap too large to be uploaded int

ImageView的scaleType属性

ImageView的scaleType属性 注:文章中"长边"均指从小放大过程中先达到ImageView边界的边,反之,为短边 1.center:图片居中显示,但是不进行缩放.如果图片过大,则只能部分显示,超出ImageView的部分无法显示.如图center_1与center_2.                                              center_1                                                

加载拍照原图,出现错误

也就是说,android开启硬件加速渲染,Bitmap的图层超出了GPU对于openglRender的限制值,这个不同的手机会有不同的限制. 第一步:拿到本设备的GPU对于openglRender的限制值 //added by Jack for handle exception "Bitmap too large to be uploaded into a texture". public boolean isNeedCloseHardwareAcceleration(int w, i

优化安卓应用内存的神奇方法以及背后的原理,一般人我不告诉他

安卓应用一般都害怕自己被杀.内存占用高是被杀的重要原因之中的一个.所以大家都想尽各种招数应对,但效果都一般. 但有一招: WindowManagerGlobal.getInstance().startTrimMemory(TRIM_MEMORY_COMPLETE); 差点儿没有人提及.这段时间tos的实战,在通知栏和桌面都有尝试,发现效果还不错,但要掌握好这个函数的使用方法.须要细致理解背后的原理,毕竟这个调用相当于在局部时间内让应用的一系列GPU缓存被清理.相当于硬件加速失效. 文章分三大部分

优化安卓应用内存的神秘方法以及背后的原理,一般人我不告诉他

安卓应用一般都害怕自己被杀,内存占用高是被杀的重要原因之一,所以大家都想尽各种招数应对,但效果都一般. 但有一招: WindowManagerGlobal.getInstance().startTrimMemory(TRIM_MEMORY_COMPLETE); 几乎没有人提及.这段时间tos的实战,在通知栏和桌面都有尝试,发现效果还不错,但要掌握好这个函数的用法,需要仔细理解背后的原理,毕竟这个调用相当于在局部时间内让应用的一系列GPU缓存被清理,相当于硬件加速失效. 文章分三大部分,第一大部分

你需要知道的Android拍照适配方案

拍照功能实现 Android 程序上实现拍照功能的方式分为两种:第一种是利用相机的 API 来自定义相机,第二种是利用 Intent 调用系统指定的相机拍照.下面讲的内容都是针对第二种实现方式的适配. 通常情况下,我们调用拍照的业务场景是如下面这样的: A 界面,点击按钮调用相机拍照: A 界面得到拍完照片,跳转到 B 界面进行预览: B 界面有个按钮,点击后触发某个业务流程来处理这张照片: 实现的大体流程代码如下: 01.//1.调用相机 02.File mPhotoFile = new Fi

你需要知道的 Android 拍照适配方案

近段时间,家里陪自己度过大学四年的电脑坏了,挑选好的新电脑配件终于在本周全部到货,自己动手完成组装.从AMD到i7的CPU,6G内存到14G内存,打开 AndroidStudio 的速度终于杠杆的上去了,感动到泪流满面啊!!!!!!!扯了这么多,回归一下正题,还是来说说本篇文章要写什么吧!说起调用系统相机来拍照的功能,大家肯定不陌生,现在所有应用都具备这个功能.例如最基本的,用户拍照上传头像.Android开发的孩纸都知道,碎片化给拍照这个功能的实现带来挺多头疼的问题.所以,我决定写写一些网上不