android 加裁大图,Android 加载大图问题

博客围绕Android加载大图片展开,介绍了参考方案及开源项目LargeImage。使用中出现图片无法显示问题,查看bug发现相关信息,最终查明是开启硬件加速时GPU对openglRender有限制。还给出两种解决方案,一是禁止硬件加速,二是将图片分块加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于如何加载大图片及其原理,可以参考:Android 高清加载巨图方案 拒绝压缩图片 以及开源项目LargeImage,第一次使用的时候能正常显示,但后来却无法显示(图片替换了),也没显示错误,查看bug,有一个信息:IllegalArgumentException: rectangle is not inside the image,不过不要被这条信息蒙蔽了,你在进行调试的时候,你会发现其实并未真正的超出范围,但还是输出这样的结果。当时屏幕是可以滑动的(无法显示图片,但图片高度还是填充了界面中的scrollview),此刻发现log会一直警告:

Bitmap too large to be uploaded into a texture (440x6405, max=4096x4096)

由此就真相大白了,原来是因为当开启硬件加速的时候,GPU对于openglRender 有一个限制,这个不同的手机会有不同的限制:

这个限制值可以通过canvas.getMaximumBitmapHeight()和canvas.getMaximumBitmapWidth()来获得。

解决方案有两条:http://blog.csdn.net/ta893115871/article/details/9043559

1、一个解决的方法是禁止硬件加速,简单粗暴:

2、将图片分成不同的块,每次加载需要的块。android提供了一个方法(其实加载大图片就是采取这样的方案,但还是出现上述问题,这个问题没想明白)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值