【问题标题】:Loading bitmaps into memory in compressed form in Android在Android中以压缩形式将位图加载到内存中
【发布时间】:2012-04-18 19:50:49
【问题描述】:

我过去曾编写过一款 Android 游戏,但总是遇到内存问题,因为我的图像非常大 ~(每张 1000x400 像素)。我现在想知道是否有必要将图像仅作为位图加载到内存中。有什么理由不加载一些无损压缩格式的位图吗?

我对图像压缩/解压缩效率一无所知,但我认为会有性能问题。但我觉得“简单”的压缩算法似乎不能太占用处理器资源,即使它们只将图像减少到未压缩内存占用的一半。

【问题讨论】:

    标签: android bitmap image-compression


    【解决方案1】:

    问题在于,在某种程度上,您必须拥有图像的逐像素表示,因此您必须拥有位图。

    【讨论】:

    • 没有算法允许您像这样请求像素以供使用:compressedImage.getPixel(x,y) 并对给定像素进行某种解压缩查找?
    • 它们可能存在,但效率极低。为每个像素调用一个方法会非常慢!此外,操作系统本身需要将图像表示为位图,以便操作系统进行绘制。
    • 嗯,我在想象这样的事情(尽管这是一个极端的例子):压缩算法发现位图中只有 256 种不同的颜色。它创建一个查找表,然后仅使用每个像素所需的 8 位在表中找到它的实际值。现在查找几乎不会影响速度,并且可以大大压缩内存。
    【解决方案2】:

    对此的最佳解决方案是切换到 OpenGL 可以使用的压缩图形类型,正如 gamedev.stackexchange.com 上的这个问题所回答的那样:

    https://gamedev.stackexchange.com/a/28463/8126

    不幸的是,我没有使用 OpenGL 的经验。

    【讨论】:

      猜你喜欢
      • 2015-11-12
      • 2012-01-29
      • 2015-04-23
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      • 2011-04-24
      相关资源
      最近更新 更多