当前位置:首页 > 笔记 > 正文内容

Bitmap too large to be uploaded into a texture

jsc9年前 (2016-04-07)笔记3595
从手机相册里面显示图片,但是发现有的图片能显示有的图片不能显示,路径都是对的,程序也没提示任何错误。
后来通过看日志发现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;
 
}


扫描二维码推送至手机访问。

版权声明:本文由微小站发布,如需转载请注明出处。

本文链接:https://www.jsc0.com/post/90.html

标签: Bitmap
分享给朋友:

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

equals和==区别

对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;    如果作用于引用类型的变量,则比较的是所指向的对象的地址对于equals方法,注意:equals方法不能作用于基本数据类型的变量    如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址; ...

viewpager、listview、gridview、scrollview去除蓝色阴影

xml:   android:overScrollMode="never"java:    view.setOverScrollMode(ScrollView.OVER_SCROLL_NEVER);...

TabLayout getCustomView为空的问题

今天用Tablayout——ViewPage出现getCustomView为空的问题通过源码发现,ViewPage的adapter更新会吧TabLayout  的customViewc置空。这个时候自动调用OnTabSelectedListener的onTabSelected方法去获取Cu...

Notification 8.0 关闭声音震动

NotificationChannel notificationChannel = new NotificationChannel                    (NOTIFICATION_C...

RecyclerView点击最后一个无效

RecyclerView设置的OnItemClick点击最后一个无效,在点击最后一个无效后在部分手机上点击其他item会触发最后一个view的onclick事件,有的手机始终无反应。是因为popwindow里RecyclerView宽度设置为match_parent的原因改为wrap_content...

更新Android Studio的系統找不到指定的路径错误的解决方法

Android Studio的安装和设定之后如果更换了电脑,想再次更新(检查更新)的时候也许会遇到这个问题:安装未成功完成。有关详细信息,请参阅IDE日志这是因为教室里的电脑,使用者的名称,和你家里或是别的地方的使用者名称不同所导致因为在更新的过程中,Android Studio会先将更新档放到Te...