Android的图片缓存处理

本文介绍了Android中Bitmap的基本概念,包括不同色彩格式的内存占用,并以电子签名为例,展示了如何压缩图片。此外,还探讨了Android图片的三级缓存机制,强调其在优化用户体验和节省流量方面的作用。最后分享了学习资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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,第二个参数图片质量,质量越高则图片还原到原图越接近,同时占用内存越大,最大可百分比还原,第三个是流,选择什么类型的流写入到文件里面去

这里就是一种形式,图片处理,当然这个是最基础的

通过循环压缩,当满足我们的需求大小的时候才跳出循环

图片的三级缓存机制

首先我们需要一张图片,这个时候我们有很多途径去获得,直接网络请求一张,或者从本地拿,那么怎样使最快的呢,这就涉及到图片的缓存机制了,这个机制并非是处理内存占据大小的,而是优化用户体验,节省流量的

  1. 从缓存中直接去拿:当前缓存已经存在了,直接去拿相当于是已经预加载状态,快速不需要流量
  2. 从本地缓存目录获取,这个时候需要去读取本地文件,需要权限,耗时也很短,比第一种稍长,不需要流量,拿到之后再将图片加入到缓存中去
  3. 第三种是缓存和本地缓存目录都没有的情况下,就只能去网络获取了,这种耗时长且损耗流量,当然第一次还是需要这个操作的,拿到之后将图片加入到缓存和本地缓存目录,为下一次加载提供数据

 

这里我就分享一些基础性的,更深层次的我还没理解到位,就不给大家分享了

给大家分享一波学习链接,郭神的bitmap解析

https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650243893&idx=1&sn=63fe28bbd9204b5f808708e14e57e1e8&chksm=8863725abf14fb4cf0cb60074e3224c3ea4852b44948d48f8ea0e45ccf21f0cf595459ec6b36&mpshare=1&scene=1&srcid=09057IcDQK6dPg6Od2rNmnXA#rd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值