gpt4 book ai didi

android - 位图解码资源 - 三星 S5 上的内存不足崩溃

转载 作者:行者123 更新时间:2023-11-29 20:57:11 24 4
gpt4 key购买 nike

我每次使用 Galaxy S5 尝试显示背景图片时都会遇到崩溃。

此背景位于 xxhdpi 资源文件夹中,大小与 S5 屏幕 (1080x1920) 相同,因此我不需要调用“createScaledBitmap”来缩放它。此图像的分辨率为 JPG 96dpi。

并且在调用 decodeResource 时...崩溃!!!这怎么可能?是我在这个“ super 强大”的设备中加载的唯一位图。

谢谢!!!

在我的代码下方(S5 的比例 = 1):

public static Bitmap decodeBitmapFromResource(Resources res, int resId, float scale) {

final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);

options.inSampleSize = calculateInSampleSize(options,
(int)(options.outWidth*scale),
(int)(options.outHeight*scale));

options.inJustDecodeBounds = false;

if (scale > 1) {
Bitmap bitmap = BitmapFactory.decodeResource(res, resId);
return Bitmap.createScaledBitmap(bitmap, (int)(options.outWidth*scale),
(int)(options.outHeight*scale), true);
}

return BitmapFactory.decodeResource(res, resId, options);
}

最佳答案

我也多次遇到这个问题...

尝试使用此代码..

    private Bitmap decodeFile(File f) throws IOException {
Bitmap b = null;

DisplayMetrics metrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay()
.getMetrics(metrics);

// Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;

o.inDither = false; // Disable Dithering mode
o.inPurgeable = true; // Tell to gc that whether it needs free memory,
// the Bitmap can be cleared
o.inInputShareable = true;

FileInputStream fis = new FileInputStream(f);
BitmapFactory.decodeStream(fis, null, o);
fis.close();

int scale = 1;
if (o.outHeight > metrics.heightPixels
|| o.outWidth > metrics.widthPixels) {
scale = (int) Math.pow(
2,
(int) Math.ceil(Math.log(metrics.heightPixels
/ (double) Math.max(o.outHeight, o.outWidth))
/ Math.log(0.5)));
}

// Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
fis = new FileInputStream(f);
b = BitmapFactory.decodeStream(fis, null, o2);
fis.close();

return b;
}

并注意一些事情,例如在使用后将每个位图设为空等。

关于android - 位图解码资源 - 三星 S5 上的内存不足崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27270358/

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