Bitmap解码的内存

时间:2015-04-16 12:27:56

标签: android bitmap

我对位图解码有一些疑问。

  1. 当我尝试使用BitmapFactory.decodeByteArray从byte []数组解码Bitmap时,结果位图中的param byte []和mBuffer byte []之间有什么区别。当函数返回时,位图仍然保持对byte [] param的引用?

  2. 当我使用以下代码从sdcard解码jpg文件中的位图时:

    File file = new File(getExternalCacheDir(), "large.jpg");
    bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
    if(mImageView != null){
        mImageView.setImageBitmap(bitmap);
    }
    

    此jpg文件具有10800 * 5400分辨率和13.82M大小,结果位图不为空,并且没有OOM错误,但位图未显示。怎么会这样?我认为在这种情况下android应该抛出一个OOM错误,这样我就可以抓住它来再次尝试缩小位图。但它只是没有显示。这似乎不合理。有没有人知道原因?

1 个答案:

答案 0 :(得分:0)

幸运的是,我发现当我将layerType设置为LAYER_TYPE_SOFTWARE时,会显示位图。所以我认为硬件渲染器有图像大小限制。