gpt4 book ai didi

java - 位图调整大小导致内存不足

转载 作者:行者123 更新时间:2023-12-01 06:12:33 25 4
gpt4 key购买 nike

我有一个简单的类,用于根据我的要求调整位图图像的大小。有一个简单的方法负责它,如下所示:

public static Bitmap ResizeRichImages(Bitmap bitmap, Context mContext){
try {
float originalBitmapWidth = bitmap.getWidth();
float originalBitmapHeight = bitmap.getHeight();
float originalAspectRatio = originalBitmapWidth/originalBitmapHeight;
double width_percentage = (0.05*screenWidthPixels(mContext));
float newWidth = (float)((int)screenWidthPixels(mContext)-width_percentage);
float newBitmapWidth = newWidth;
float newBitmapHeight = newBitmapWidth/originalAspectRatio;
bitmap = Bitmap.createScaledBitmap(bitmap, (int) newWidth, (int)newBitmapHeight, false);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;

}

这就是我调用这个方法的方式:

String URL = "https://maps.googleapis.com/maps/api/staticmap?center=-33.86527274921529,151.2050531328867&zoom=15&size=640x360&sensor=false&markers=color:blue%7Clabel:!%7C-33.86527274921529,151.2050531328867";

try {
bmp = Picasso.with(ViewStory.this).load(URL)
.get();
bmp = ImageController.ResizeRichImages(bmp, ViewStory.this);
} catch (Exception e) {
e.printStackTrace();
}

但是,几乎每次我在调用 ResizeRichImages 方法时都会遇到内存不足异常。我哪里出错了?

最佳答案

  • 您可以尝试像下面的代码 fragment 一样进行压缩,而不是在 list 中使用 largeHeap 选项(该选项始终是最后一个选项)。

*

byteArrImage = null;

ByteArrayOutputStream baos = new ByteArrayOutputStream();
if(data != null) thumbnail = (Bitmap) data.getExtras().get("data");
if(thumbnail != null) {
//thumbnail.compress(Bitmap.CompressFormat.PNG, 85, baos);
thumbnail.compress(Bitmap.CompressFormat.JPEG, 85, baos);
byteArrImage = baos.toByteArray();
uploadImageToServer();
}

关于java - 位图调整大小导致内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32269598/

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