图片
常见的图片存储的格式有bmp、jpg、png、tif、gif、pcx、tga、exif、fpx、
svg、psd、cdr、pcd、dxf、ufo、eps、ai、raw、WMF、webp等等。
其中JPEG(JPG)、PNG、WebP、BMP、GIF在Android平台得到支持,
项目中最常用的JPEG(JPG)、PNG、WebP三种。
在Android bitmap源码中有体现,源码如下
JPEG
PNG
- 无损压缩格式
- 支持ARGB三个通道的颜色比JPEG多透明通道
- 无损压缩并且比JPEG多支持一个透明通道所以图片要比JPEG大上许多
WebP
- WebP既支持有损压缩也支持无损压缩
- 支持ARGB全通道
- 支持动图
- 在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%
- 体积较小可以大幅度提升APP体验流程度、减轻服务器压力
总结:在选取图片格式时优先选用WebP,其次如果需要透明通道PNG格式,不需要透明通道使用JPEG格式。
图片配置属性
可在Bitmap.Config见到如下6种配置:
他们的命名规则AAAA_BBBB,其中AAAA表示其支持的通道,BBBB表示一像素占用的大小。如:
ALPHA_8:只支持透明通道,每个像素占用1字节。
每个像素存储为单个半透明(alpha)通道。例如,这对于有效地存储掩模非常有用。不存储颜色信息。使用此配置,每个像素需要1个字节的内存。
RGB_565:支持RGB三个通道,每个像素占用5+6+5,16位,2字节。
ARGB_4444:已弃用。此字段在API级别13中已弃用。由于此配置质量较差,建议使用此字段ARGB_8888
。
ARGB_8888:支持ARGB四个通道,每个像素占用8+8+8+8,32位,4字节。
RGBA_F16:这个比较特殊,官方解释是每个像素存储在8个字节上。每个通道(RGB和半透明的alpha)存储为a half-precision floating point value
。此配置特别适用于宽色域和HDR内容。