经典面试题1:图片占多少内存

一个图片占多少内存在于图片的尺寸大小。

以一张尺寸为900 × 600的图片为例,图片共有像素数:

900 × 600 = 540,000像素(Pixel)。

如果图片是RGB 色彩模式,占用的内存是:

900 × 600 × 3 = 1,620,000 字节(bytes).

后面"× 3"表示每个像素内RGB 颜色的信息需要3字节,也是24比特(bit)。 

也可以说每个像素中 3 RGB值,每一个RGB值需要一个 8 比特,也是一个字节,总计24个比特。

存储不同的色彩模式需要不同的内存,具体如下:

图片类型                            |      每像素多少字节 

1 比特 数据图(Line art)        |      每像素1/8字节,也是一个比特。

8 比特灰度(Grayscale)         |      每像素1字节。

16 比特灰度(Grayscale)        |     每像素2字节。

24 比特 RGB                        |     每像素3字节,这是图片中最常用的,如JPG格式。

32 比特 印刷色彩模式(CMYK) |   每像素4字节

48 比特 RGB                        |    每像素6字节

内存单位

关于兆字节 (Megabytes)

大部分程序系统使用来衡量图片大小,下面解释一下字节和兆的关系。

1兆(MB) = 1024 × 1024 = 1,048,576 字节, 也就是2的20次方。

1,000,000字节不等于 1兆, 10,000,000 / (1024x1024) = 9.54 兆。

回到本文开始时的题目:

一张尺寸为900×600的RGB图片占的内存大小:

900 × 600 × 3 = 1,620,000 字节(bytes) = 1.582兆(M)

再来一个例子,一个1024 x 768大小 24位色(24 bit RGB)的图像占多少内存?

1024 × 768 × 3 = 2,359,296 字节(bytes) =2,359,296/(1024 x 1024)兆(M)=2.25M


注意:

*    图片编辑器一般用MB衡量尺寸大小。(没压缩之前的原始尺寸除以1024x1024)

*    操作系统里显示的尺寸一般是压缩后的大小,会小于原始尺寸。

总体来说一张图片占多少内存,在于图片的尺寸大小色彩模式


另外,该题目结合一些设备知识有一些变种:

1. 如iPhone 6 上设备分辨率大小的RGB类型图片占用内存多少?

由于iPhone 6的设计分辨率是750x1334,计算所有像素点 = 750X1334X3 。

图片占用内存大小 =  (750X1334X3) / (1024X1024) , 也就是 2.86M.

2. 一张6x4寸的图片在150dpi设备上,占用多少内存?

首先是计算像素点, 像素点 = (6 x 150) x(4 x 150) = 540,000像素

如果图片是RGB类型,则占用内存为(540,000 x 3)/(1024 x 1024) = 1.545M。


推荐阅读

经典面试100题 - 持续更新中 

更多

获取更多内容请关注微信公众号豆志昂扬:

+ 直接添加公众号豆志昂扬

+ 微信扫描下图二维码;

推荐阅读更多精彩内容