Android 中图片的内存大小计算

一、计算机是如何表示图片的

  1. 首先我们先了解一下计算机中图片格式, 百度一下你会发现图片有如下格式:
    bmp,jpg,png,tif,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw,WMF,webp等。
    那么实际中,我们常用的格式无非就是 jpg,png,bmp,三种, 下面的也是三种格式的概念


    image.png
  2. 另外我们不得不说webp这种格式了, WebP 是由 Google于2010年提出,拥有一种优秀的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha 透明以及动画的特性,在 JPEG 和 PNG 上的转化效果都相当优秀、稳定和统一。
    之前做过一个测试,对比 PNG 原图、PNG 无损压缩、PNG 转 WebP(无损)、PNG 转 WebP(有损)的压缩效果:
    image.png

    更多测试查看 WebP 示例 (PNG 转 WebP)(请用 Chrome 浏览器打开)
  3. 虽然webp 优势这么好,但是在国内使用其实并不多,国外可使用多一些,

二、图片色彩

我们都知道颜色经常用ARGB来表示,A表示Alpha,即透明度;R表示red,即红色;G表示green,即绿色;B表示blue,即蓝色。Bitmap的色彩也是用ARGB来表示的

三、 在Android 中图片内存计算的方式

我们都知道在Android 中,图片最终是一bitmap 的方式表示,那么Android中,一张图片的内存大小改怎么计算呢,首先我们了解几个概念

  1. 图片的占用内存的计算方式, 图片长度图片宽度单位像素占用的字节数,
    图片的长度和宽度我们都知道是图片的分辨率例如 图片的分辨率是1920*1080 那么长度就是1920 宽度就是1080 , 单位像素占用的字节数,也就是我们所说的位深,(这个后面会讲)
  2. Bitmap.Config
    Bitmap.Config中有Bitmap.Config.ALPHA_8、Bitmap.Config.RGB_565、Bitmap.Config.ARGB_4444、Bitmap.Config.ARGB_8888有四个枚举变量。
    Bitmap.Config.ALPHA_8表示:每个像素占8位,没有色彩,只有透明度A-8,共8位。
    Bitmap.Config.ARGB_4444表示:每个像素占16位,A-4,R-4,G-4,B-4,共4+4+4+4=16位。
    Bitmap.Config.RGB_565表示:每个像素占16位,没有透明度,R-5,G-6,B-5,共5+6+5=16位。
    Bitmap.Config.ARGB_8888表示:每个像素占32位,A-8,R-8,G-8,B-8,共8+8+8+8=32位。
    位数越高,那么可存储的颜色信息越多,图像也就越逼真。
  3. Bitmap位深的计算
    ARGB_8888是最占内存的,因为一个像素占32位,8位=1字节,所以一个像素占4字节的内存。ARGB_4444的一个像素占2个字节。RGB_565的一个像素也是占两个字节。ALPHA_8的一个像素只占一个字节。

弄清了这几个概念,那么我们就可以计算不同图片格式的的内存占用大小,假设有一张480x800的图片
四个格式下所占的内存如下


image.png

四、图片占用空间

那么在图片占用空间上,按照上面的理解,是不是说图片分辨率一样,所占的内存空间就是一样呢?
其实,如果要理解这个问题,我们其实要了解图片占用的硬盘空间和内存空间两个概念

  1. 内存占用空间
    图片占用空间的的计算方式: 图片长度 * 图片宽度图片位深
    图片长款由图片的分辨率决定,而图片的位深由不同的图片格式决定,Android中默认位图深是.ARGB_8888
    也就是位深是24位, 一张 400
    800 24位深的图片,我们就可以计算出在Android中消耗的内存是:
    800 * 400 * 24 = 9,216,000bit = 1536000B = 1.46M

  2. 硬盘空间
    硬盘空间其实也是就是我们所说的图片保存后占用的大小,也就是在图片在我们硬盘上占用的大小,在我们图片右键属性,可以查到,


    图片一属性

    图片二属性

    图片一的大小

    图片二的大小

那么这个是怎么得来的呢? 按照内存大 计算方式,分辨率一样,占用的大小应该是一样的,为什么图片一和图片二 同样都是1920 * 1080 的图片,占用硬盘空间差异这么大, 图片一占用到1.25M 图片二占用268K,这是为什么呢,影响愿意有二.

  1. 我们就要想到不同图片格式为什么存在的问题, 同样的图片,不同的格式 所占的空间大小不一样, 这就是因为不同格式压缩算法不一样的原因 ,我们也可以这样理解,我们不同的压缩方式和7-zip压缩,同样的大小文件,占用的空间是不一样的.
  2. 图片的格式一样,分辨率也一样,为什么我们的图片还是有差异,其实这个是因为我们的图片的"内容" 有关,就是这张图片里面所有像素的二进制的表现值,所以我们可以知道,图片的硬盘存储空间大小,没有绝对的关系

ok,本篇文章完

参考资料

https://www.jianshu.com/p/5752eae2f27a
https://www.zhihu.com/question/27201061

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容