于是只好用压缩图片+缓存来处理了,我擦,真麻烦
用BitmapFactory.Options来压缩图片
BitmapFactory.Options有一个字段inJustDecodeBounds,
当这个字段为 true 时,将不返回实际的bitmap不给其分配内存空间而里面只包括一些解码边界信息即图片大小信息。通过设置inJustDecodeBounds为true,获取到outHeight(图片原始高度)和
outWidth(图片的原始宽度),然后计算一个inSampleSize(缩放值),然后就可以取图片了,这里要注意的是,inSampleSize 可能小于0,必须做判断。
代码:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeFile(path,options); //此时返回bm为空
int be = (int)(options.outHeight /(float)300);
if(be<0)
be=1;
options.inSampleSize = be;
options.inJustDecodeBounds=false;
bitmap=BitmapFactory.decodeFile(path,options);