时间:2021-05-20
曾经有一个朋友问过我一个问题, 一张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中看到了以下信息:
这是后来我加载了一张数码相机拍的照片后看到的.
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在android项目中访问网络图片是非常普遍性的事情,如果我们每次请求都要访问网络来获取图片,会非常耗费流量,而且图片占用内存空间也比较大,图片过多且不释放的话
在android项目中访问网络图片是非常普遍性的事情,如果我们每次请求都要访问网络来获取图片,会非常耗费流量,而且图片占用内存空间也比较大,图片过多且不释放的话
静态图和动态图的区别是静态图片占用的内存比较小,动态图片占用的内存比较大,而理论上来说任何占用内存的程序都是必须耗费电能的。 动态图(activitydiag
一,IOS与图片内存在IOS上,图片会被自动缩放到2的N次方大小。比如一张1024*1025的图片,占用的内存与一张1024*2048的图片是一致的。图片占用内
PHP查询MySQL大量数据的内存占用分析这篇文章主要是从原理,手册和源码分析在PHP中查询MySQL返回大量结果时,内存占用的问题,同时对使用MySQLCAP