gpt4 book ai didi

android - 为什么Android要求为小照片分配大量内存?

转载 作者:行者123 更新时间:2023-12-03 16:24:27 25 4
gpt4 key购买 nike

我正在尝试在Android手机上加载965KB的jpeg照片。代码如下。当我运行代码时,应用程序崩溃。

Button _btn = (Button) findViewById(R.id.btn1);
_btn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {
Drawable _draw = getResources().getDrawable(R.drawable.sea, null);
}
});

这是崩溃日志。

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.a3sumatch.multipart, PID: 29240 java.lang.OutOfMemoryError: Failed to allocate a 362797068 byte allocation with 8388608 free bytes and 254MB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609) at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080) at android.content.res.Resources.loadDrawableForCookie(Resources.java:2761) at android.content.res.Resources.loadDrawable(Resources.java:2654) at android.content.res.Resources.getDrawable(Resources.java:833) at com.a3sumatch.multipart.MainActivity$1.onClick(MainActivity.java:40) at android.view.View.performClick(View.java:5205) at android.view.View$PerformClick.run(View.java:21176) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:171) at android.app.ActivityThread.main(ActivityThread.java:5611) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)

最佳答案

I am trying to load a jpeg photo with a size of 965KB on my android phone



那是一张绝对巨大的照片。 JPEG像PNG和WebP一样,是一种压缩文件格式。从角度来看,JPEG格式的3229x2480秃头照片为829.3KB。我希望您的尺寸在每个维度上都更大。该分辨率高于我所知道的任何Android设备屏幕的分辨率。

您的 OutOfMemoryError是362797068字节的分配。 Bitmap是图像的未压缩版本。 362797068字节等效于约9524x9524方形图像(和4字节/像素)。

因此,您需要做两件事:
  • 如果您在res/drawable/中有此图像,请将其移至res/drawable-nodpi/
  • 沿每个维度将此图像的分辨率降低至少四倍
  • 关于android - 为什么Android要求为小照片分配大量内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45941256/

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