大抽奖jpg图像的问题

时间:2012-11-22 11:21:51

标签: android bitmap drawable jpeg bitmapfactory

在几天之内,我一直在这里和互联网上寻找解决方案来解决一个问题,即加载或移动大型jpg图像(现在作为可绘制的资源),我认为是时候了要问自己,有很多问题和解决方案非常相关。

我正在使用OpenGL开发3D地形模拟,问题是我使用的是地形纹理相当大的jpg图像(2048x2048 = 1,94 MB)。

让我们看看我做过的一些工作:

第一

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

这一次崩溃,可能是因为图像太大了

第二

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);

但是我得到一个非常令人沮丧的空位图...

其他的工作环节是,因为可绘制资源在应用程序的“内部”,为什么不将它们移动到那里的sd卡和decodefile形式,但是,给位图或者drawable移动到sdcard的解决方案我总是找到用户BitmapFactory.decodeResource(getResources(),R.drawable.terrain,options);

我感谢任何建议,从那时起我将在我的项目中处理其他任务。

提前致谢

1 个答案:

答案 0 :(得分:0)

好吧,也许我很幸运,这里有适用于我的单词indy indy:

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.
    }
}

我希望它可以帮助其他人...