【问题标题】:Opening jpegs on Android - I get an OutOfMemoryException在 Android 上打开 jpeg - 我收到 OutOfMemoryException
【发布时间】:2011-01-18 19:52:12
【问题描述】:

在我的应用程序中,我需要处理由 Android 内置应用程序拍摄的图像。它们被保存为 JPEG 格式,我需要访问每个像素。我试图从 jpeg 图像创建一个Bitmap 实例,但我经常得到一个OutOfMemoryException。我无法调整大小或裁剪图像。有解决办法吗?

【问题讨论】:

  • 你能解释一下用例吗,你需要对图像做什么?也许有其他方法可以做到这一点。
  • 我需要执行各种数字图像处理算法,例如二值化、转换为灰度、不同的滤镜等。

标签: android image bitmap jpeg


【解决方案1】:

查看BitmapRegionDecoder。它从 API 级别 10 开始可用。您可以解码图像文件的一部分并处理每个块。

【讨论】:

    【解决方案2】:

    BitmapFactory 经常会抛出 OutOfMemoryExceptions,恐怕我从来没有真正发现任何解决方法。它似乎在做自己的内存管理,有时它真的无法解析图像。在我处理过的几个必须大量处理图像的应用程序中,我只需要捕获异常,然后在无法解析图像时在 UI 中留下空白点。有时,如果您稍后再试,这些图像会解析,大概是当 BitmapFactory 的内部内存状态工作得更好时。

    当我在开发 J2ME 应用程序时,我试图找到一个纯 Java 开源 JPEG 解析器,以便可以在没有内置 JPEG 支持的手机上使用它。事实证明,这样的东西很难找到,我能找到的最接近的东西被埋在了 Eclipse 源代码的深处。我能够获取该来源,对其进行去蚀并尝试一下。它确实具有逐行读取内容的优点(尽管我不确定它会如何处理逐行扫描 JPEG),但在我们的 J2ME 设备上速度慢得离谱(特别是因为它们大多是低端设备)所以我们最终没有将它用于任何事情。

    【讨论】:

      猜你喜欢
      • 2020-02-10
      • 2020-05-09
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 2011-07-14
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多