通过点击此链接,我编写了以下代码来显示来自 sdcard 的大图像位图。
try {
InputStream lStreamToImage = context.getContentResolver().openInputStream(Uri.parse(imagePath));
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(lStreamToImage, null, options);
options.inSampleSize = 8; //Decrease the size of decoded image
options.inPreferredConfig = Bitmap.Config.ARGB_4444;
options.inJustDecodeBounds = false;
bitmap = BitmapFactory.decodeStream(lStreamToImage, null, options);
} catch(Exception e){}
image.setImageBitmap(bitmap);
但它没有返回位图(我的意思是它返回 null)。在 logcat 中,它反复显示以下消息
08-02 17:21:04.389: D/skia(19359): --- SkImageDecoder::Factory returned null
如果我将评论options.inJustDecodeBounds行并重新运行它,它可以正常工作但速度很慢。我在上面提供的开发人员指南链接说使用inJustDecodeBounds来有效地加载位图。
请告诉我我在哪里做错了。