超长大图显示 解决Bitmap too large to be uploaded into a texture

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

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的适配器中显示出来就可以了!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容