java - 当我们使用 Bitmap 时内存不足

标签 java android bitmap out-of-memory

我已经使用位图转换了图像(字符串 url),但有时会产生内存不足错误。这是我的代码:

        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
        BitmapFactory.decodeStream(new FileInputStream(f),null,o);

        //Find the correct scale value. It should be the power of 2.
        final int REQUIRED_SIZE=150;
        int width_tmp=o.outWidth, height_tmp=o.outHeight;
        int scale=1;
        while(true){
            if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
                break;
            width_tmp/=2;
            height_tmp/=2;
            scale++;
        }

        //decode with inSampleSize
        BitmapFactory.Options o2 = new BitmapFactory.Options();
        o2.inSampleSize=scale;

最佳答案

首先,缩小图像的大小。您可以在不大幅改变质量的情况下做到这一点。为了进行实验,只需尝试将图像保存为位图即可。你会感到震惊。例如,如果您的 jpg 大小为 3MB,则转换为 bmp 后大约为 21MB - 这是一个巨大的数字!

关于java - 当我们使用 Bitmap 时内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18201989/

相关文章:

c# - 在 C# 中读取 PPM 图像

c# - 如何用颜色填充位图对象中的封闭区域

c++ - 柏林噪声和高度图/位图

java - 一起使用 ActiveMQ 和 GlassFish

java - AndroidManifest 中的工具替换

javascript - 如何使用 phonegap 和 android 混淆 javascript 和 html 文件

android - 在此 MapSample 小部件上方找不到正确的 Provider<AppState>

java - 来自原生的 Android O 设备序列号

java - 关于return语句的问题

android - 通过单击按钮停止 geocomplete 在输入字段中添加用户定义的位置