使用BitmapFactory获取图像上的尺寸可以获得OutOfMemoryError,

时间:2012-10-16 16:36:46

标签: java android image bitmapfactory

我试图找到一种方法来获取图像的尺寸,这样我知道它的尺度如何。这样做的目的是它不会有这些内存问题。

所以我在做的是:

BitmapFactory image = new BitmapFactory();
BitmapFactory.Options opts = new BitmapFactory.Options();
image.decodeFile(_path,opts);
if(opts.outHeight > 2048 || opts.outWidth > 2048){
   opts.inSampleSize= 2;
}
VIEW.setImageBitmap(image.decodeFile(_path,opts));

问题在于,在第一次解码时,如果设备没有足够的内存,则会出错。

我这样做的方法是把它放在trycatch块中,然后在if .... ||中添加其他语句opts.outHeight == -1 || opts.outWidth == -1){

所以我想知道的是,是否有一种方法可以做到我想要的东西而不会在解码时吮吸太多的内存?我只需要知道原始图像的高度和宽度。

1 个答案:

答案 0 :(得分:1)

作为BitmapFactory.Options的一部分,opts有一个属性inJustDecodeBounds,需要将其设置为true才能实现这一目标。

如果将其设置为true,那么所有代码​​都可以正常工作。它根本不构建大图像,只返回mimetypes,outheight,outwidth等。

访问:http://developer.android.com/training/displaying-bitmaps/index.html

可以获得进一步的帮助
相关问题