0

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

所以我正在做的是:

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){

所以我想知道的是,有没有一种方法可以做我想做的事情而不会在解码时占用太多内存?毕竟我只需要知道原始图像的高度和宽度。

4

1 回答 1

1

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

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

进一步的帮助可以通过访问:http: //developer.android.com/training/displaying-bitmaps/index.html

于 2012-10-16T19:45:25.707 回答