【问题标题】:Bitmap is always null, however file path is correct位图始终为空,但文件路径正确
【发布时间】:2014-08-13 10:29:42
【问题描述】:

这是我将 Bitmap 从另一个活动中检索到的 filepath 加载到 ImageView 的代码。
我可以获取文件,但Bitmap 始终是null

我已尝试使用 250kb 的图像代码可以正常工作,但它不适用于 1.5MB 的图像。如何解决此问题?

Logcat 消息:

skia:           --- SkImageDecoder::Factory returned null
Choreographer:  Skipped 855 frames! `The application may be doing too much work on its main thread`.

代码

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String imagepath = extras.getString("FILEPATH1");
    File imgFile = new  File(imagepath);
        if(imgFile.exists()){                   
            Bitmap bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());                    
            imgCaptured.setImageBitmap(bitmap);                         
        }           
    }
}

【问题讨论】:

  • 发布完整代码。你在用AsyncTask吗?
  • 您在自己的问题中有答案,请为 Bitmap 工作创建一个单独的线程。
  • @SmartphoneDeveloper:在单独的线程中它也给出了 null。我之前也试过!
  • 您确定 imgFile 是有效的图像文件吗?
  • 你的绝对路径是什么?

标签: android android-bitmap


【解决方案1】:

正如 Javadocs 所说:

Returns: the resulting decoded bitmap, or null if it could not be decoded.

因此,如果您可以从同一个文件中成功加载小位图,但较大的文件失败,则表明大小存在问题。解码 1.5M JPEG 文件很可能会产生超过 10M 大小的位图。您的手机无法加载那么大的图片。

顺便说一句,您可以通过将宽度和高度乘以 4(每个通道一个字节:红色、绿色、蓝色、alpha)来估计图像的未压缩大小。

例如,具有 4128x2322 像素的 2.6M JPEG 在未压缩时大约需要 38340000 字节 (38M)。

这可能会有所帮助:Handling large Bitmaps

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
相关资源
最近更新 更多