【问题标题】:using BitmapFactory to obtain dimensions on an image can get OutOfMemoryError,使用 BitmapFactory 获取图像上的尺寸会得到 OutOfMemoryError,
【发布时间】:2012-10-16 16:36:45
【问题描述】:

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

所以我在做的是:

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

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

【问题讨论】:

  • 你看到了吗training
  • 我没有,它解决了问题。我不知道 inJustDecodeBounds

标签: java android image bitmapfactory


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    相关资源
    最近更新 更多