当前位置:网站首页>Bitmap加载内存分析
Bitmap加载内存分析
2022-06-23 22:10:00 【MirkoWug】
一、Bitmap内存
1.Bitmap内存的计算方式
1.decodeResource 从drawable、mipmap这种对应的文件目录中加载图片Bitamp 占用内存大小 = 宽度像素 x (inTargetDensity / inDensity) x 高度像素 x (inTargetDensity / inDensity)x 一个像素所占的内存inTargetDensity :设备的dpiinDensity :当前文件所在drawable文件夹目录 对应的dpi
一个像素所占的内存,有以下几种像素格式:
ALPHA_8 1byte
ARGB_4444 2byte
ARGB_8888 4byte
RGB_565 2byte
2.从本地磁盘 、asset、等方式中加载图片Bitamp 占用内存大小 = 宽度像素 x 高度像素 x 一个像素所占的内存
注意:当使用第三方库时,则不能用这些公式来计算,因为三方库内部会重新对内存进行优化。
eg:
fresco:不管图片来源是哪里,即使是 res,图片占用的内存大小仍旧以原图的分辨率计算。
Glide:如果有设置图片显示的控件,那么会自动按照控件的大小,降低图片的分辨率加载。图片来源是 res 的分辨率转换规则对它也无效。
注意:Bitmap的内存大小 和像素大小是不一样的。
内存大小= 像素大小(即图片宽 x 高)x 一个像素所占内存
二、影响内存的二个因素
1、图片分辨率,也就是图片尺寸
2、像素点所占内存大小,对应4种像素格式
所以我在做内存优化时,可以从这二方面来入手:
1.减小图片的尺寸
2.调整为占用内存更小的像素格式。
实际开发中,我们更倾向第一种,因为修改像素格式,会导致图片质量下降,导致失真。
而对第一种,可以参考 Luban
三、结论
- 图片来源是 res 内的不同资源目录时,系统会根据设备当前的 dpi 值以及资源目录所对应的 dpi 值,做一次分辨率转换,规则如下:新分辨率 = 原图横向分辨率 * (设备的 dpi / 目录对应的 dpi ) * 原图纵向分辨率 * (设备的 dpi / 目录对应的 dpi )。
- 其他图片的来源,如磁盘,文件,流等,均按照原图的分辨率来进行计算图片的内存大小。
- jpg、png 只是图片的容器,图片文件本身的存储大小与它所占用的内存大小没有什么关系。
参考
1.Bitmap分析
2.https://www.cnblogs.com/dasusu/p/9789389.html
3.Bitmap分析
边栏推荐
- Androidkotlin comprehensive and detailed class usage grammar learning guide
- WebService客户端请求失败 can not create a secure xmlinputfactory
- What are the processes, levels, stages and key points of requirements analysis in software development
- 【Try to Hack】masscan
- 光大期货安全吗?开户需要什么东西?
- Face and lining of fresh food pre storage
- Production of labels for table products
- Is Everbright futures safe? What do I need to open an account?
- Analysis on the advantages and disadvantages of the best 12 project management systems at home and abroad
- 【HackTheBox】 meow
猜你喜欢
随机推荐
Telecommuting: how to become a master of time management| Community essay solicitation
Detailed usage of exists in SQL statements
生鲜前置仓的面子和里子
AndroidKotlin全面详细类使用语法学习指南
PHP的curl功能扩展基本用法
对不起,你的USB走线可能搞错了!
C#/VB. Net word to text
Installation and use of qingscan scanner
百万消息量IM系统技术要点分享
Notes to nodejs (III)
MySQL索引底层为什么用B+树?看完这篇文章,轻松应对面试。
有哪些劵商推荐?在线开户安全么?
数据解读!理想L9冲刺「月销过万」,从BBA手中抢份额
[js] remove the extra zero after the decimal point
Go deep: the evolution of garbage collection
MySQL导致索引失效的几种情况
CTF—Go题目复现
Payment industry tuyere project: smart digital operation 3.0
2022 cloud consulting technology series storage & CDN special sharing meeting
光大期货安全吗?开户需要什么东西?







