大绘制的JPG图片的问题(problems with big drawable jpg image)

2019-11-01 05:35发布

几天的过程中我一直在这里看着,在许多岗位,在因特网上的问题即时解决在具有装载或移动大JPG图片(位于由现在的可绘制reource),我觉得是时候问自己altought有许多问题和解决方案非常相关。

我正在开发一个三维地形模拟与OpenGL和问题是,我使用的地形纹理相当大的JPG格式(2048×2048 = 1.94 MB)。

让我们来看看一些workarround我所做的:

第一名:

Bitmap terrainBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.terrain, options);

这一次崩溃inmediately,可能是因为图片太大

第二:

Uri path = Uri.parse("android.resource://com.jgc.my_app/" + R.drawable.terrain);
URL ulrn;ulrn = new URL(path.getPath());
HttpURLConnection con = (HttpURLConnection)ulrn.openConnection();
InputStream is = con.getInputStream();
Bitmap bmp = BitmapFactory.decodeStream(is);

一个可能是一个非常愚蠢的尝试

第三:

Bitmap terrainBitmap = BitmapFactory.decodeFile("android.resource://com.jgc.my_app/terrain.jpg", options);

但我发现了一个非常令人沮丧的空位图作为结果...

考虑到其他workarrounds是,作为绘图资源是“内部”的应用程序,为什么不将它们移动到SD卡和decodefile形式存在,但考虑到移动位图或绘制到,我已经在SD卡的解决方案总是发现用户BitmapFactory.decodeResource(getResources(),R.drawable.terrain,选项);

我欣赏任何建议,从那时起,我将致力于在角落找寻我proyect其他任务。

提前致谢

Answer 1:

好吧,也许我很幸运,这里是N功,以防万一IND这workd对我来说:

private static BitmapFactory.Options terrainBitmapOptions = new BitmapFactory.Options();

...

// Set our bitmaps to 16-bit, 565 format.
    terrainBitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565;

...

InputStream is = getResources().openRawResource(R.drawable.terrain);
Bitmap terrainBitmap;
try {
    terrainBitmap = BitmapFactory.decodeStream(is, null, terrainBitmapOptions);
} finally {
    try {
        is.close();
        } catch (IOException e) {
        // Ignore.
    }
}

我希望它可以帮助别人...



文章来源: problems with big drawable jpg image