BitmapFactor.decodeByteArray方法导致OOM
2016-09-02 15:56
656 查看
当我们将一个多屏大小的base64图片转换成Bitmap进行操作时,使用BitmapFactory.decodeByteArray(data, 0, data.length)非常容易OOM,BitmapFactory.decodeByteArray(data,
offset, data.length)三个参数的意义分别是:data为byte类型的资源数据,offset为位移量,一般为0,最后一个是资源数据的数组的长度,同时,该方法非常的消耗内存,所以我们采用如下的方式对图片进行处理:
[java] view
plain copy
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;
}
offset, data.length)三个参数的意义分别是:data为byte类型的资源数据,offset为位移量,一般为0,最后一个是资源数据的数组的长度,同时,该方法非常的消耗内存,所以我们采用如下的方式对图片进行处理:
[java] view
plain copy
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;
}
相关文章推荐
- 通过BitmapFactory.decodeByteArray把byte[]转成Bitmap出现的OOM的解决方法
- 通过BitmapFactory.decodeByteArray把byte[]转成Bitmap出现的OOM的解决方法
- 血的教训 BitmapFactory.decodeByteArray() 是个邪恶的方法
- android获取网络图片的用法 BitmapFactory.decodeByteArray
- BitmapFactory.decodeByteArray() 返回null,分析与解决
- BitmapFactory.decodeByteArray() 返回null,分析与解决
- android获取网络图片的用法 BitmapFactory.decodeByteArray 返回null
- BitmapFactory.decodeByteArray如何使用
- 调用 BitmapFactory.decodeByteArray 函数返回 null 值
- 关于Android中Bitmap太大导致OOM错误
- Xamarin.Android OOM 思路整理 (BitmapFactory.DecodeByteArray)
- 关于android中bitmap使用时的oom的一些解决方法
- Bitmap导致的OOM 一些解决方案
- Android使用bitmap导致内存溢出(oom)问题
- Android开发中解析、创建Bitmap对象时OOM的有效解决方法并附上一些干货
- 关于android程序中使用bitmap放大功能时的OOM问题解决方法
- android中关于bitmap造成的OOM内存溢出防止方法
- BitmapFactory.decodeByteArray函数获取的bitmap为null
- 关于Bitmap 导致的OOM 解决方案
- android decodeByteArray outofmemoryerror