gpt4 book ai didi

java - 如何避免与 BitmapFactory.decodeByteArray 不一致的 OutOfMemory 异常?

转载 作者:搜寻专家 更新时间:2023-11-01 08:47:00 25 4
gpt4 key购买 nike

我的 android 应用程序有以下代码:

private PictureCallback pictureTakenCallback = new PictureCallback() {

@Override
public void onPictureTaken(byte[] data, Camera camera) {
Bitmap bmp = null;
Bitmap scaledBitmap = null;
ByteArrayOutputStream baos = null;

showLoading(true);//UI crap

try
{
bmp = BitmapFactory.decodeByteArray(data, 0, data.length); //OOM Exception Thrown Here

//if the bitmap is smaller than 1600 wide, scale it up while preserving aspect ratio
if(bmp.getWidth() < 1600) {
int originalHeight = bmp.getHeight();
int originalWidth = bmp.getWidth();

scaledBitmap = Bitmap.createScaledBitmap(bmp, 1600,
originalHeight*1600/originalWidth, true);

bmp = scaledBitmap;
scaledBitmap = null;
}

baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 30, baos); // 30% compression
image = baos.toByteArray();

submitImage();
}
catch (java.lang.OutOfMemoryError e) {
e.printStackTrace();
showLoading(false);
}
catch (Exception e) {
e.printStackTrace();
showLoading(false);
}
finally
{
bmp = null;

if (baos != null) {
try {
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}

baos = null;
}
}
};

有时我会收到用户提示他们的手机出现内存不足异常的情况。我的设备从来没有遇到过这个问题,这是否与他们的手机内存不足有关?

有人可以看看这段代码并给我提示如何提高它的效率吗?谢谢!

最佳答案

总是像这样在 Manifest 中尝试 android:largeHeap="true"

<application 
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
>

关于java - 如何避免与 BitmapFactory.decodeByteArray 不一致的 OutOfMemory 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27308541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com