在自定义照相中,由于返回的结果是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;
}