Android图片占用内存全面分析
2023-06-13 09:15:18 时间
曾经有一个朋友问过我一个问题,一张512*512 150KBPNG格式图片和一张512*512100KB压缩比是8的JPG格式的图片,加载到内存中,也就是加载到一个Bitmap中,哪个占用的内存大?这个问题似乎有点难回答,测试一下就知道了.
好了,按照要求我准备了三张图片,
1.512*512px,114KB,PNG
2.512*512px,138KB,JPG,压缩比12
3.512*512px,57KB,JPG,压缩比8
接下来是写一个Demo,一个Bitmap加载不同的图片,然后使用bitmap.getRowBytes()*bitmap.getHeight();得到图片的内存占用情况.(这么简单的程序就不放出来献丑了)
得到的数字居然都是一样的.刚好是4MB,为什么是4MB?512*512*4*2,这么算出来的,Bitmap默认加载使用ARGB_8888,每个像素会占用4byte,因为每个像素有两个Chanel.
所以说,Android图片占用内存大小只和图片分辨率(像素)及色彩模式有关系.可以参考Bitmap源代码
/**
*Eachpixelisstoredon4bytes.Eachchannel(RGBandalpha
*fortranslucency)isstoredwith8bitsofprecision(256
*possiblevalues.)
*
*Thisconfigurationisveryflexibleandoffersthebest
*quality.Itshouldbeusedwheneverpossible.
*/
今天终于解开了我心里的一个结,以前总以为加载越大的图片就会占用得越多.
PS:难道Bitmap渲染是使用OpenGL的吗?在Debug中看到了以下信息:
这是后来我加载了一张数码相机拍的照片后看到的.
相关文章
- 聚焦 Android 11: 大功告成
- android Glide 4.0图片加载失败
- android图片资源加密,Android平台图像文件加密
- Android Sdk安装和环境变量配置[通俗易懂]
- android sdk manager安装,Android SDK Manager安装过程
- android listview添加headview
- Android resource linking failed_android:authorities
- Android angle_android 界面悬停
- 分享一例Android内存碎片OOM
- android scaleanimation动画,Android 动画之ScaleAnimation应用详解「建议收藏」
- 【Android 内存优化】使用 Memory Analyzer ( MAT ) 工具分析内存 ( hprof 文件转换 | MAT 工具下载 | MAT 工具使用 )
- 【Android 内存优化】libjpeg-turbo 函数库交叉编译 ( libjpeg-turbo 函数库下载 | libjpeg-turbo 编译文档 | 环境准备 | NASM 安装 )
- 【Android 内存优化】Bitmap 图像尺寸缩小 ( 考虑像素密度、针对从不同像素密度资源中解码对应的 Bitmap 对象 | inDensity | inTargetDensity )
- 【Android 内存优化】自定义组件长图组件 ( 自定义组件构造方法 )
- 【Android 内存优化】自定义组件长图组件 ( 长图滚动区域解码 | 手势识别 GestureDetector | 滑动计算类 Scroller | 代码示例 )
- 【Android 热修复】热修复原理 ( 加载 Dex 文件到内存中 | DexClassLoader | PathClassLoader | 反射 Element[] dexElements )
- 【Android 逆向】Android 系统文件分析 ( cpuinfo 处理器信息文件 | self 当前进程信息文件 | meminfo 当前内存信息文件 )
- 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )
- 【Android Gradle 插件】Gradle 构建机制 ③ ( settings.gradle 生成 Settings 对象 | build.gradle 生成 Project 对象 )
- android PakageManagerService启动流程分析详解手机开发
- 安卓编年史(8):Android 1.5 Cupcake——虚拟键盘打开设备设计的大门
- Android关机弹出选择菜单的深入解析
- Android编程中避免内存泄露的方法总结