2012-10-16 120 views
0

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

所以我在做什么是:

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块,然后添加额外的语句,如果.... opts.outHeight == -1 || opts.outWidth == -1){

所以我想知道的是,有没有办法做到我想要的东西,而不会吸收解码上的太多内存?我只需要知道原始图像的高度和宽度。

+0

你看到这个[培训](HTTP://开发商。 android.com/training/displaying-bitmaps/index.html) –

+0

我没有,它解决了问题。我不知道inJustDecodeBounds – Fallenreaper

回答

1

作为BitmapFactory.Options opts的一部分,有一个属性inJustDecodeBounds需要设置为true来完成该事实。

如果您将其设置为true,那么所有代码​​都可以正常工作。它不是建立在所有的大图像,而只是返回MIME类型,outheight,outwidth等

更多帮助可以通过将获得:http://developer.android.com/training/displaying-bitmaps/index.html