经典面试题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。
推荐阅读
更多
获取更多内容请关注微信公众号豆志昂扬:
+ 直接添加公众号豆志昂扬;
+ 微信扫描下图二维码;