概述
Android Bitmap 在内存中所占大小计算
- 显示有关概念简单说明
- 计算Bitmap大小
显示有关概念简单说明
常用的图片格式如 .jpg 、.png、.bmp(Windows)、.gif 等等 是以一定压缩方式压缩的图片文件
Android 常用的显示格式包括 RGB_4444、ARGB_8888、RGB565等, Windows 打开图片文件的属性一般有位深度的描述。
这个表示的意思是(以ARGB_8888为例):有Alpha、Red、Green、Blue4个数据通道,分别表示透明度、红色、绿色、蓝色数据,并且每一个通道是8Bit(1byte=8Bit,8位),那么ARGB_8888就是4个8Bit,即32Bit(4byte)。
以此内推:
- RGB_565就是2byte
- RGB_4444也是2byte
- Windows 位深度24表示3byte
这些代表的是一个像素的数据大小。
Android 设备通常都有一个分辨率 在设置中可以看到:比如我的设备1080 x 2256
屏幕物理尺寸是2.95inch x 6.22inch
那么计算出 屏幕对角线 =
w
i
d
t
h
2
+
h
e
i
g
h
t
2
=
2.9
5
2
+
6.2
2
2
=
6.89
i
n
c
h
sqrt{ width^{2} +height^{2} } = sqrt{ 2.95^{2} + 6.22^{2} } = 6.89inch
width2+height2=2.952+6.222=6.89inch
像素密度 表示在单位物理尺寸上的像素数量多少:
····比如我的设备 屏幕对角线上的像素个数是
108
0
2
+
225
6
2
=
2501
sqrt{ 1080^{2} +2256^{2} } = 2501
10802+22562=2501 那么像素密度就是 2501 / 6.89 = 363dpi
因为Android 规定160dpi下 1dp = 1px density = 1 那么我的就是density = 363/160 = 2.27 表示1dp = 2.27px
计算Bitmap大小
以一张手机相机拍摄的4608 x 3456(高 x 宽) 分辨率的图为例,(相机和手机屏幕分辨率不一样,因为相机的光学元器件参数和屏幕不是完全匹配的)
如果按手机的最大宽度为宽度等比例缩放显示:
就是将一张4608 x 3456 (高 x 宽) 缩放成 1440 x 1080(宽与屏幕一致)
RGB_565: 1440 x 1080 x 2 = 3110400 byte = 2.97Mb
ARGB_8888:1440 x 1080 x 4 = 5.93Mb
最后
以上就是寒冷大白为你收集整理的Android 图片(Bitmap对象)在内存中所占大小的计算的全部内容,希望文章能够帮你解决Android 图片(Bitmap对象)在内存中所占大小的计算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复