Android图片占用内存全面分析
时间:2023-02-20 01:05:38
曾经有一个朋友问过我一个问题, 一张512*512 150KB PNG格式图片和一张512*512 100KB 压缩比是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源代码
/**
* Each pixel is stored on 4 bytes. Each channel (RGB and alpha
* for translucency) is stored with 8 bits of precision (256
* possible values.)
*
* This configuration is very flexible and offers the best
* quality. It should be used whenever possible.
*/
今天终于解开了我心里的一个结,以前总以为加载越大的图片就会占用得越多.
PS:难道Bitmap渲染是使用OpenGL的吗?在Debug中看到了以下信息:
这是后来我加载了一张数码相机拍的照片后看到的.
标签:Android,图片,占用内存
0
投稿
猜你喜欢
Android开发flow常见API的使用示例详解
2021-09-25 05:27:49
C#应用ToolStrip控件使用方法
2023-05-23 09:10:18
Spring Native打包本地镜像的操作方法(无需通过Graal的maven插件buildtools)
2023-11-25 04:24:30
Android 静默安装实现方法
2021-08-04 05:11:25
Android 微信6.1 tab栏图标和字体颜色渐变的实现
2023-12-14 22:34:04
Java中的Object.getClass()方法解析
2022-05-06 18:54:48
c#和javascript函数相互调用示例分享
2023-10-08 21:33:52
android中实现在ImageView上随意画线涂鸦的方法
2023-03-04 07:55:23
JAVA读取文件流,设置浏览器下载或直接预览操作
2023-10-06 09:20:59
Android实现纸飞机的简单操作
2022-05-16 12:26:04
opencv配置的完整步骤(win10+VS2015+OpenCV3.1.0)
2023-06-28 14:55:19
初识Spring Boot框架之Spring Boot的自动配置
2022-08-25 10:27:57
Java实现按权重随机数
2023-11-28 23:15:32
Java实现微信发红包
2021-07-22 05:11:07
IntelliJ IDEA最佳配置(推荐)
2023-11-17 01:55:44
浅谈Java代码的 微信长链转短链接口使用 post 请求封装Json(实例)
2023-07-27 19:36:09
Java开发环境jdk 1.8安装配置方法(Win7 64位系统/windows server 2008)
2022-05-11 20:00:58
java多线程中执行多个程序的实例分析
2023-03-11 18:21:58
C#将html table 导出成excel实例
2023-12-20 04:58:55
深入探讨Java多线程中的volatile变量
2023-08-31 02:32:18