在Android中显示SD卡的大图像

前端之家收集整理的这篇文章主要介绍了在Android中显示SD卡的大图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Android中,如何从SD卡显示图像(任何大小),而不会出现内存不足错误

是否有必要先将图像放入Media Store?

非常感谢伪代码示例.如果显示的图像与设备的内存级别一样大,则为额外点.

解决方法

编辑:这个问题实际上已经在 Strange out of memory issue while loading an image to a Bitmap object回答了(两个最高的投票答案).它也使用inSampleSize选项,但使用一个小方法自动获取适当的值.

我原来的回答是:

BitmapFactory.Options类的inSampleSize可以解决您的问题(http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize).它的工作原理是制作一个比原始宽度和高度为1 / inSampleSize的位图,从而减少内存消耗(通过inSampleSize ^ 2?).您应该在使用之前阅读该文档.

例:

BitmapFactory.Options options = new BitmapFactory.Options();
// will results in a much smaller image than the original
options.inSampleSize = 8;

// don't ever use a path to /sdcard like this,but I'm sure you have a sane way to do that
// in this case nebulae.jpg is a 19MB 8000x3874px image
final Bitmap b = BitmapFactory.decodeFile("/sdcard/nebulae.jpg",options);

final ImageView iv = (ImageView)findViewById(R.id.image_id);
iv.setImageBitmap(b);
Log.d("ExampleImage","decoded bitmap dimensions:" + b.getWidth() + "x" + b.getHeight()); // 1000x485@H_502_17@ 
 

然而,在这里它只适用于图像,我猜,在SampleSize ^ 2倍于允许的内存大小,并将降低小图像的质量.诀窍是找到合适的inSampleSize.

猜你在找的Android相关文章