美文网首页经典面试题ios学习资料iOS开发
经典面试题1:图片占多少内存

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

作者: 豆志昂扬 | 来源:发表于2016-06-14 18:40 被阅读2932次

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

    以一张尺寸为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题 - 持续更新中 

    更多

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

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

    + 微信扫描下图二维码;

    相关文章

      网友评论

      • markRao:像这种问图片占内存大小的题目,直接问RGB是不清楚占几个字节的

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

      本文链接:https://www.haomeiwen.com/subject/cieudttx.html