用ImageLoad加载图片,会有的图片load不出来,报出的警告是: Bitmap too large to be uploaded into a texture (440x5500 max=4096x4096):
经过查找资料是因为当开启硬件加速的时候,GPU对于openglRender 有一个限制,这个不同的手机会有不同的限制:
这个限制值可以通过canvas.getMaximumBitmapHeight()和canvas.getMaximumBitmapWidth()来获得。
一般我们框架都有缩放图片内存
Glide框架以下都测试了
例子:如果 原图:400x4000 ,可以直接载入不过耗内存啊;我们缩放成200x200,这里是按照width进行缩放。缩放成200x2000可以加载进入imageview;
例子:原图 300X6000,不能直接载入,超过4096,这时候我们设置缩放200X200,因为BitmapFactory.Options.inSampleSize是整数行,这里200大于300/2; 所以此时 并没有缩放,设置其实是无效的。还是出错。
这时候我们就需要设置 小于150 的width 缩放 。
反之 height 一样的道理。。