跳到正文
IGCSE·Tuition
计算机科学 · 课程

计算未压缩图像大小

当题目只用文字描述图片,而公式又不在眼前时,计算文件大小会让人觉得像在猜。

本页内容
  1. 为什么答案需要假设?
  2. 一步一步怎么算?
  3. 例题
  4. 要留意的错误
  5. 自我检测
  6. 接下来学什么

要求未压缩图像的大小,用像素总数乘以每个像素所用的位数:位数 = 宽 × 高 × 颜色深度。当题目给出分辨率和颜色深度,并问这幅图需要多少存储空间时,就会用到它。

它直接建立在上一模块的位深度之上,也是图像、声音与存储模块的第一课。

为什么答案需要假设?

位图图像是一张像素网格,每个像素把一种颜色存成二进制数。每个像素的位数就是颜色深度(colour depth)。位数越多,能表示的颜色越多,但图像需要的存储也越多。

公式只给出像素数据的大小。真实文件还会保存宽、高等细节,也可能经过压缩。所以要写出你的假设,例如“假设没有压缩并忽略文件元数据”。

一步一步怎么算?

  1. 求像素总数: 宽 × 高。
  2. 求每个像素的位数。 如果给的是颜色数,就找能容纳它们的最小位深度(2位数 ≥ 颜色数)。
  3. 相乘: 像素数 × 每像素位数,得到以位为单位的大小。
  4. 换算: 除以 8 得到字节,更大的单位按指定约定换算(见存储单位换算)。
  5. 写出假设并带上单位。

同一个方法写成剑桥风格的伪代码:

INPUT Width, Height, Depth
Bits ← Width * Height * Depth
Bytes ← Bits / 8
OUTPUT Bytes

追踪 Width = 800、Height = 600、Depth = 8:Bits = 800 × 600 × 8 = 3 840 000,所以 Bytes = 480 000。

例题

一张照片宽 1 024 像素、高 768 像素,颜色深度为 24 位。求未压缩大小,分别用字节和 KiB 表示(1 KiB = 1 024 字节)。

第 1 步,像素数: 1 024 × 768 = 786 432。

第 2 步,位数: 786 432 × 24 = 18 874 368 位。

第 3 步,字节数: 18 874 368 ÷ 8 = 2 359 296 字节。

第 4 步,KiB: 2 359 296 ÷ 1 024 = 2 304 KiB(即 2.25 MiB)。

用另一条路检查: 24 位等于 3 字节,所以 786 432 × 3 = 2 359 296 字节。两条路结果一致。

假设: 没有压缩、没有元数据,所以真实文件会稍大一点,如果压缩了则会小很多。

要留意的错误

常见的失误是把颜色数当成位深度。

错误的答案: 一幅 640 × 480、256 种颜色的图像。大小 = 640 × 480 × 256 = 78 643 200 位。

学生在应该用位数的地方用了 256。

纠正:256 种颜色需要 8 位,因为 28 = 256。所以大小 = 640 × 480 × 8 = 2 457 600 位 = 307 200 字节。错误的答案大了 32 倍,快速做一次合理性检查就会发现。

自我检测

写出每一步,然后打开答案。

1. 一幅图像宽 100 像素、高 50 像素,颜色深度为 4 位。需要多少字节?

显示答案

像素数 = 100 × 50 = 5 000。位数 = 5 000 × 4 = 20 000。字节数 = 20 000 ÷ 8 = 2 500 字节。

2. 一幅 640 × 480 像素的图像使用 16 种颜色。求未压缩大小(KiB)。

显示答案

16 种颜色需要 4 位(24 = 16)。像素数 = 640 × 480 = 307 200。位数 = 307 200 × 4 = 1 228 800。字节数 = 153 600。KiB = 153 600 ÷ 1 024 = 150 KiB。

3. 一幅黑白图像为 8 × 8 像素。需要多少字节?你假设的位深度是多少?

显示答案

两种颜色每个像素需要 1 位。位数 = 8 × 8 × 1 = 64。字节数 = 64 ÷ 8 = 8 字节,假设颜色深度为 1 位且没有元数据。

接下来学什么

声音的存储用的是类似的推理,所以接着学习计算采样音频的大小。两课都熟练后,到练习集里检验。Python 推理沙盒适合把公式写成代码并核对你的算术。

有些学生每一步都看得懂,却因为忘了写假设或忘了除以 8 而失分。这正是我们的老师在线上一对一计算机科学补习中会留意的模式。

常见问题

未压缩图像大小的公式是什么?

图像大小(位)= 宽(像素)× 高(像素)× 颜色深度(位)。除以 8 得到字节。这个公式只适用于未压缩的位图,所以要写出这个假设;真实文件还可能包含宽高等额外数据。

如果图像有 256 种颜色,颜色深度就是 256 位吗?

不是。颜色深度是每个像素所用的位数。256 种颜色需要 8 位,因为 2 的 8 次方等于 256。把 256 当作位深度是非常常见的错误,所以要先把颜色数换成位数。

为什么一定要写出假设?

真实文件含有元数据,压缩也会改变大小。写上“假设没有压缩且忽略元数据”,能让阅卷老师知道你明白答案是理论最小值,题目措辞简短时也能保护你。

更新于:

下一步

如果题目措辞一变,图像大小题就又算错,一对一的老师可以请你把每个假设说出来,并修正出错的那一步。

一小时付费试听课,按所安排老师确认的收费,RM80 起。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

家长:在这里咨询

  • 已通过我们的服务帮助 9,000+ 名学生
  • 9+ 年帮助 IGCSE 学生