【android学习】APP图片内存计算
图片尺寸大小计算
当图片文件放在项目的drawable目录时候:
- drawable文件尺寸与pc中文件尺寸关系
| 目录 | 屏幕密度 |
|---|---|
| drawable-ldpi | 120dpi |
| drawable-mdpi | 160dpi |
| drawable-hdpi | 240dpi |
| drawable-xhdpi | 320dpi |
| drawable-xxhdpi | 480dpi |
- 获取手机的屏幕密度
C:\Users\Administrator>adb shell wm density
Physical density: 440
图片尺寸计算公式:
在手机中的width= (手机的屏幕密度/drawable目录设定的屏幕密度)* 图片在PC上面的宽度
在手机中的height= (手机的屏幕密度/drawable目录设定的屏幕密度)* 图片在PC上面的高度
举一个简单例子:
图片在pc上面的宽高为

demo.jpg存放在drawable-xhdpi目录,在代码中获取到的值
BitmapFactory.Options options = new BitmapFactory.Options();Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.demo, options);Log.d(TAG, "width: " + bitmap.getWidth() + " height : " + bitmap.getHeight());Log.d(TAG, "drawable-xhdpi屏幕密度: " + options.inDensity);Log.d(TAG, "内存大小 " + bitmap.getAllocationByteCount());
得到的结果是
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: width: 660 height : 880
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: drawable-xhdpi屏幕密度: 320
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: 内存大小 2323200
这里的 660 = 440/320*480
880 = 440/320*640
图片内存计算
先看图片的格式及其所占用的字节数,图片加载如果没有设置,默认是ARGB_8888
| 格式 | 字节数 |
|---|---|
| ALPHA_8 | 1个字节 |
| RGB_565 | 2个字节 |
| ARGB-4444 | 2个字节 |
| ARGB_8888 | 4个字节 |
内存计算公式: 内存 = 图片宽 * 图片高 * 每个像素所暂用的字节数
举个例子
上面的图片内存: 2323200 = 660 * 880 * 4
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: width: 660 height : 880
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: drawable-xhdpi屏幕密度: 320
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: 内存大小 2323200
总结:
这里主要是从drawable中读取图片,获得的图片尺寸大小需要根据相应的手机密度以及drawable密度做相应的缩放,如果是从sdcard中读取,就没有缩放,直接使用图片宽*高*相应的字节数
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
