【问题标题】:Out of memory error in creating bitmap [duplicate]创建位图时出现内存不足错误[重复]
【发布时间】:2016-02-06 05:22:11
【问题描述】:

我的 android 项目中出现内存不足错误,它指向以下语句:

bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

有没有其他方法可以创建ARGB_8888 位图,可以让我避免出现内存不足错误?

建议表示赞赏。 提前致谢:)

【问题讨论】:

  • 不要使用位图,使用uri
  • 可以压缩图片
  • 谢谢大家,我浏览了这些链接,但不知道如何修改此语句(Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888))。如果我这样开始: BitmapFactory.Options options = new BitmapFactory.Options();选项.inSampleSize = 8;创建位图的语句应该是什么
  • @AnyssaK 查看我的更新答案。

标签: android performance out-of-memory


【解决方案1】:

Android上位图的内存异常有很多问题,其中很多在stackoverflow上都有讨论。如果您检查现有问题,看看您的问题是否与现有问题之一相匹配,那么最好写下您的情况有何不同。

不同的位图配置会有不同的内存占用。 RGB_565 是一种16 位颜色 格式。 ARGB_888832 位 格式。

无论您选择了哪种 getHolder().setFormat(); 配置,或者它是如何绘制的,ARGB_8888 位图 都会显着变大(在内存中)而不是 RGB_565 格式的位图。 所以最好使用 RGB_565 格式而不是 ARGB_8888

一些例子:

Out of memory exception due to large bitmap size

Android: out of memory exception in Gallery

Android handling out of memory exception on image processing

等:https://stackoverflow.com/search?q=android+out+of+memory+exception+bitmap

欲了解更多详情,请访问此处。 android - out of memory exception when creating bitmap

【讨论】:

  • 我正在尝试使用具有以下 2 个语句的位图创建一个空白画布: obBitmapBuffer = Bitmap.createBitmap(obWidth, obHeight, Bitmap.Config.ARGB_8888); obCanvasBuffer = 新画布(obBitmapBuffer);有人可以帮忙吗,我该怎么做。 (我引用了上面提到的链接,但这并没有帮助)
  • 感谢 Harshad,我刚尝试使用 RGB_565,它会影响动画 UI,这是不可接受的 :( 还有其他线索吗?
  • @AnyssaK 你可以把Bitmap缩小然后使用它。它也可以解决问题。
猜你喜欢
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
相关资源
最近更新 更多