我尝试从res / raw文件夹解码位图(1920x1920),这是一个png资源。我需要全尺寸位图。我想使用BimtapFactory.decodeFileDescriptor而不是BitmapFactory.decodeFile || decodeResource,因为处理OOM的可靠性高于其他人: 当我尝试这个代码时,位图是NULL!但该文件不为空。我一直在努力打球。 请帮忙!
Context mCtx=MainActivity.this;
Bitmap bm = null;
//id is the resId in res/raw
AssetFileDescriptor file =mCtx.getResources().openRawResourceFd(R.raw.skin_default_0);
bm = BitmapFactory.decodeFileDescriptor(file.getFileDescriptor(), null,
options);
答案 0 :(得分:1)
InputStream bm = getResources().openRawResource(R.raw.splash);
BufferedInputStream bufferedInputStream = new BufferedInputStream(bm);
Bitmap bmp = BitmapFactory.decodeStream(bufferedInputStream);
int nh = (int) (bmp.getHeight() * (512.0 / bmp.getWidth()));
bmp = Bitmap.createScaledBitmap(bmp, 512, nh, true);
view.setImageBitmap(bmp);
试试这段代码。
原始文件夹 - 将文件保持为未压缩状态。 我不这么认为,
BitmapFactory.decodeFileDescriptor
在与BitmapFactory.decodeStream
比较时会给你有效的结果,获取文件的inputStream并对其进行解码。如果你认为图像太大而你使用很多这样的图像你的应用程序会非常沉重,因为原始文件夹文件不会被压缩。如果你想缩放位图,请使用我在代码中添加的代码片段代码。我会更好地理解你。
...谢谢