概述
Android的bitmap
Bitmap:称为位图文件,扩展名可以是.bmp或者.dib。
Bitmap图片定义为由像素点组成,每个像素点可以由多种色彩表示
下面是四种色彩格式
ARGB_8888:ARGB分别代表的是透明度,红色,绿色,蓝色,每个值分别 用8bit来记录,也就是一个像素会占用4byte,共32bit.
ARGB_4444:ARGB的是每个值分别用4bit来记录,一个像素会占用 2byte,共16bit.
RGB_565:R=5bit,G=6bit,B=5bit,不存在透明度,每个像素会占用2byte, 共16bit.
ALPHA_8:该像素只保存透明度,会占用1byte,共8bit.
在实际应用中而言,建议使用ARGB_8888以及RGB_565。 如果你不需要透明度,选择RGB_565,可以减少一半的内存占用.
一张图片占据多大内存呢,举个例子:我的手机为例
我手机是1920*1080的分辨率,使用默认的ARGB_8888,那么大小是:
1920*1080*(32/8)/1024/1024 = 7.91M
由此可见,对于图片处理的重要性
加下来就说说图片处理
以我的电子签名为例子
首先我签名后会生成一张bitmap,然后我通过本地存储,将图片进行处理后保存
源码:compress(Bitmap.CompressFormat format, int quality, OutputStream stream)
第一个参数转化为什么格式,比如png,第二个参数图片质量,质量越高则图片还原到原图越接近,同时占用内存越大,最大可百分比还原,第三个是流,选择什么类型的流写入到文件里面去
这里就是一种形式,图片处理,当然这个是最基础的
通过循环压缩,当满足我们的需求大小的时候才跳出循环
图片的三级缓存机制
首先我们需要一张图片,这个时候我们有很多途径去获得,直接网络请求一张,或者从本地拿,那么怎样使最快的呢,这就涉及到图片的缓存机制了,这个机制并非是处理内存占据大小的,而是优化用户体验,节省流量的
- 从缓存中直接去拿:当前缓存已经存在了,直接去拿相当于是已经预加载状态,快速不需要流量
- 从本地缓存目录获取,这个时候需要去读取本地文件,需要权限,耗时也很短,比第一种稍长,不需要流量,拿到之后再将图片加入到缓存中去
- 第三种是缓存和本地缓存目录都没有的情况下,就只能去网络获取了,这种耗时长且损耗流量,当然第一次还是需要这个操作的,拿到之后将图片加入到缓存和本地缓存目录,为下一次加载提供数据
这里我就分享一些基础性的,更深层次的我还没理解到位,就不给大家分享了
给大家分享一波学习链接,郭神的bitmap解析
https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650243893&idx=1&sn=63fe28bbd9204b5f808708e14e57e1e8&chksm=8863725abf14fb4cf0cb60074e3224c3ea4852b44948d48f8ea0e45ccf21f0cf595459ec6b36&mpshare=1&scene=1&srcid=09057IcDQK6dPg6Od2rNmnXA#rd
最后
以上就是缥缈小虾米为你收集整理的Android的图片缓存处理的全部内容,希望文章能够帮你解决Android的图片缓存处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复