概述
前言
一张 500 x 600 的图片,把它放到 drawable-xhdpi 目录下,使用4.95 英寸的1920*1080分辨率的手机进行加载,那它占用的内存是多大呢?
计算公式
这里直接给出相对应的内存计算公式:
内存占用 = (imgWidth * deviceDpi/drawableDpi )*(imgHeight*deviceDpi/drawableDpi )* 图片对应的位图配置
imgWidth:
加载图片对应的宽;
imgWidth:
加载图片对应的高;
deviceDpi:
手机对应的像素密度(dpi);
drawableDpi:
Android 系统定义的像素密度(dpi);
deviceDpi计算方式
- 计算直角边像素数量: 1920 ^2 +1080 ^2 = 2202 ^2(勾股定理);
- 计算 DPI:2202 / 4.95 = 445;
- 得到这个设备的 DPI 为 445 (每英寸的距离中有 445 个像素);
Android 系统定义的 Dpi表格
ldpi | mdpi | hdpi | xhdpi | xxhdpi | xxxhdpi | |
---|---|---|---|---|---|---|
分辨率 | 240x320 | 320x480 | 480x800 | 720x1280 | 1080x1920 | 2160x3840 |
系统dpi | 120 | 160 | 240 | 320 | 480 | 640 |
基准比例 | 0.75 | 1 | 1.5 | 2 | 3 | 4 |
图片对应的位图配置
在Android平台中,针对图片质量(颜色深度)以及显示透明/半透明颜色划分出四种常用的位图配置(定义在Bitmap.Config中),用来描述像素的存储方式。如下:
Bitmap.Config.ALPHA_8:
每个像素用8比特位表示,占1个字节,只有透明度,没有颜色。
Bitmap.Config.RGB_565:
每个像素用16比特位表示,占2个字节,RGB分量分别使用5位、6位、5位,上面的图已经有作说明。
Bitmap.Config.ARGB_4444:
每个像素用16比特位表示,占2个字节,由4个4位组成,ARGB分量都是4位。
Bitmap.Config.ARGB_8888:
每个像素用32比特位表示,占4个字节,由4个8位组成,ARGB分量都是8位。
Android中常用的配置是RGB_565和ARGB_8888两种,默认是ARGB_8888。
计算结果
了解了上述知识,那我们只需要将参数代入到公式进行计算即可:
内存占用 = (500 * 448 / 320) * (600 * 448 / 320)*4 ≈ 2.3M
结语
如果以上文章对您有一点点帮助,希望您不要吝啬的点个赞加个关注,您每一次小小的举动都是我坚持写作的不懈动力!ღ( ´・ᴗ・` )
最后
以上就是复杂睫毛膏为你收集整理的Android如何计算一张图片加载到内存中的大小?的全部内容,希望文章能够帮你解决Android如何计算一张图片加载到内存中的大小?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复