Android如何计算一张图片加载到内存中的大小?

前言

一张 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表格

ldpimdpihdpixhdpixxhdpixxxhdpi
分辨率240x320320x480480x800720x12801080x19202160x3840
系统dpi120160240320480640
基准比例0.7511.5234

图片对应的位图配置

在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

结语

如果以上文章对您有一点点帮助,希望您不要吝啬的点个赞加个关注,您每一次小小的举动都是我坚持写作的不懈动力!ღ( ´・ᴗ・` )

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值