You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bitmap尺寸与画质对比:哪类易引发OutOfMemoryException?

哪张Bitmap更易引发OutOfMemoryException?

答案很明确:那张2K尺寸的低画质Bitmap更容易引发OOM,核心原因在于Bitmap在内存中的占用逻辑和文件大小完全无关——真正决定内存消耗的是像素总数和像素编码格式,而非文件的压缩后大小。

关键原理拆解

Bitmap加载到内存后,是被解码为原始的像素数据存储的,计算公式是:
内存占用 = 图像宽度 × 图像高度 × 单个像素字节数

我们看到的文件大小(比如4MB、2MB)是图像经过压缩(JPG/PNG等格式的压缩算法)后的结果,压缩率高低(画质好坏)只影响文件大小,和内存里的像素数据量没有直接关系。

对应你的例子计算

假设我们用最常见的ARGB_8888像素格式(每个像素占4字节):

  • 480p Bitmap(按标准640×480计算):
    内存占用 = 640 × 480 × 4 = 1,228,800字节 ≈ 1.17MB
    它的4MB文件大小只是因为压缩率低(画质高),但像素总数少,内存占用很低。
  • 2K Bitmap(2560×1440):
    内存占用 = 2560 × 1440 × 4 = 14,745,600字节 ≈ 14MB
    它的2MB文件大小是因为压缩率高(画质低),但像素总数是480p的12倍左右,内存占用远超前者。

哪怕换成更节省内存的RGB_565格式(每个像素2字节),2K Bitmap的内存占用也有≈7MB,依然远大于480p的≈0.58MB。

额外提醒

如果你的场景里需要加载大尺寸Bitmap,一定要记得做采样压缩(比如通过BitmapFactory.Options.inSampleSize参数),降低加载到内存的像素数量,避免OOM。

内容的提问来源于stack exchange,提问作者Rifat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:14:38