美文网首页
超长大图显示 解决Bitmap too large to be

超长大图显示 解决Bitmap too large to be

作者: 星际行者 | 来源:发表于2016-11-28 22:32 被阅读0次

    最近写项目遇到一个这样的异常:

    W/OpenGLRenderer: Bitmap too large to be uploaded into a texture (950x16544, max=16384x16384)

    简单来说,Android对于图片大小的显示是有限制的,太大或者太长的图片都无法显示。在网上查了一下,说是关闭硬件加速就可以解决这个问题,但是试了一下,没用,还是无法显示。

    关闭硬件加速没用,而且关闭硬件加速也不太好,会对性能造成一定影响。

    最后想出另外一个办法:将bitmap位图切割将其放进链表,然后在将其显示出来。

    方法如下:

    
    public static ArrayList resizeBitmapList(Bitmap source) {
    
    ArrayList bitmapsList =newArrayList<>();
    
    int height = source.getHeight();
    
    int maxHeight =4000;
    
    int width = source.getWidth();
    
    int count = height%maxHeight==0?height/maxHeight:height/maxHeight+1;
    
    if(height > maxHeight) {
    
    for(int i=0; i
    
    if(i != count -1) {
    
    bitmapsList.add(Bitmap.createBitmap(source,0, maxHeight * i, width, maxHeight));
    
    }else{
    
    bitmapsList.add(Bitmap.createBitmap(source,0,maxHeight*i,width,height-maxHeight*i));
    
    }
    
    }
    
    }else{
    
    bitmapsList.add(source);
    
    }
    
    return bitmapsList;
    
    }
    
    

    这样,将获取的bitmap进行切割之后,放进ListView或者RecyclerView的适配器中显示出来就可以了!

    相关文章

      网友评论

          本文标题:超长大图显示 解决Bitmap too large to be

          本文链接:https://www.haomeiwen.com/subject/ymfapttx.html