【android学习】APP图片内存计算

图片尺寸大小计算

当图片文件放在项目的drawable目录时候:

  • drawable文件尺寸与pc中文件尺寸关系
目录屏幕密度
drawable-ldpi120dpi
drawable-mdpi160dpi
drawable-hdpi240dpi
drawable-xhdpi320dpi
drawable-xxhdpi480dpi
  • 获取手机的屏幕密度
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_81个字节
RGB_5652个字节
ARGB-44442个字节
ARGB_88884个字节

内存计算公式: 内存 = 图片宽 * 图片高 * 每个像素所暂用的字节数

举个例子

上面的图片内存:  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中读取,就没有缩放,直接使用图片宽*高*相应的字节数


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部