这是我的代码,用于将Bitmap
从ImageView
加载到另一项活动中检索到的filepath
。
我可以获取文件,但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);
}
}
}
答案 0 :(得分:2)
正如Javadocs所说:
Returns: the resulting decoded bitmap, or null if it could not be decoded.
因此,如果您成功地从同一个文件加载了一个小位图,但是较大的文件失败了,那么它就是一个很大的问题指标。最有可能解码1.5M JPEG文件会导致位图大小超过10M。您的手机无法加载大图像。
顺便说一句,您可以通过乘以宽度和高度并将其乘以4(每个通道一个字节:红色,绿色,蓝色,alpha)来估计图像的未压缩大小。
例如,具有4128x2322像素的2.6M JPEG在未压缩时大约需要38340000bytes(38M)。
这可能有所帮助:Handling large Bitmaps