您的位置:首页 > 其它

通过BitmapFactory.decodeByteArray把byte[]转成Bitmap出现的OOM的解决方法

2014-09-24 11:57 417 查看
在自定义照相中,由于返回的结果是byte[]类型的,需要对结果进行旋转,于是把就要把它转成bitmap类型的,最开始使用Bitmap mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length)来转,老报OOM,在网上也找了很多关于优化OOM的方法。

最后,采用了以下方法后,再也没有报OOM了

public static Bitmap byteToBitmap(byte[] imgByte) {
InputStream input = null;
Bitmap bitmap = null;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
input = new ByteArrayInputStream(imgByte);
SoftReference softRef = new SoftReference(BitmapFactory.decodeStream(
input, null, options));
bitmap = (Bitmap) softRef.get();
if (imgByte != null) {
imgByte = null;
}

try {
if (input != null) {
input.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bitmap;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐