图片优化如何做?
1.图片质量压缩
JPEG是一种广泛使用的有损压缩图像标准格式,它不支持透明和多帧动画,PNG是一种无损压缩图片格式,它支持完整的透明通道,从图像处理领域将,JPEG只有RGB三个通道,而PNG有ARGB四个通道。因此PNG图片占用空间一般比较大,会无形中增加最终APP的大小,由于目前大多数APP都是PNG格式图片资源,我们可以通过工具对PNG图片进行压缩来达到瘦身的目的,使用场景:将图片压缩后将图片上传到服务器,或者保存到本地。根据实际需求来
2.使用webp图片
WebP由Google在2010年发布,它支持有损和无损压缩、支持完整的透明通道、也支持多帧动画,是一种比较理想的图片格式。在既保证图片质量又要限制图片大小的需求下,WebP应该是首选,可以将PNG/JPEG 转换为WebP
如果你的APP最低支持到Android4.0,那么可以直接使用系统提供的能力来支持WebP,如果是4.0以下的系统,也可以通过在APP中集成第三方函数库例如webp-android-backport来实现对WebP的支持。
3.使用.9图
.9.png,本质上仍然是PNG格式图片,它是针对Android平台的一种特殊PNG格式图片,可以在图片指定位置拉伸或者填充内容。.9图的优点是体积小,拉伸不变形,能够很好地适配Android各种机型
4.可以使用图片的缓存
目前图片的缓存框架有很多,常见的有四种
Android-Universal-Image-Loader
Picasso
Glide
Fresco
5.尺寸压缩
通过减少单位尺寸的像素值,正真意义上的降低像素。
6.采样率压缩
使用BitmapFactory.Options中的inSampleSize变量来减少加载到内存中的图片大小
设置图片的采样率,降低图片像素
7.使用矩阵
大图小用用采样,小图大用用矩阵。//如果使用直接替换矩阵的话,在Nexus6 5.1.1上必须关闭硬件加速
如果我要把图片放到 ImageView 当中呢?一样可以,请看:
1 Matrix matrix = new Matrix();
2 matrix.postScale(2, 2, 0, 0);
3 imageView.setImageMatrix(matrix);
4 imageView.setScaleType(ScaleType.MATRIX);
5 imageView.setImageBitmap(bitmap);
8.合理选择Bitmap的像素格式
ALPHA8 没必要用,因为我们随便用个颜色就可以搞定的
ARGB4444 虽然占用内存只有 ARGB8888 的一半,不过已经被官方嫌弃
ARGB8888 是最常用的,大家应该最熟悉了。
RGB565 看到这个,我就看到了资源优化配置无处不在,这个绿色。。(不行了,突然好邪恶XD),其实如果不需要 alpha 通道,特别是资源本身为 jpg 格式的情况下,用这个格式比较理想。