大部分我们使用的都是位图,位图有一个特点就是有很多个像素点组成的像素矩阵
那我们如何做呢?实现的大致思路如下:我们所谓的压缩实际上就是去设置BItmap中的一个inSampleSize(采样率)属性,通过它实现图片的压缩
怎么样去给inSampleSize属性设置一个合适的值呢??首先因为屏幕的分辨率多样化,然后我的图片要根据不同分辨率来得到不同inSampleSize,这样才会合适显示在我的手机屏幕上。所以需要获得屏幕的高度和宽度,然后再去拿到屏幕高度和宽度。然后用图片的宽度,高度分别去除以屏幕的高度和宽度,最后就得到高度比例和宽度比例。
第一种压缩方式。(比较繁琐 通过采集率)
要 根据当前的手机分辨率的大小,来适当压缩图片的大小比例
1、若图片的宽度大于图片高度(即横向图片),且宽度大于屏幕宽度:Size=ImWidth/Width
2、若图片的高度大于图片宽度(即纵向图片),且高度大于屏幕高度:Size=ImHeight/Height;
3、就是根据一个图片压缩比例算法公式:取图片宽度压缩倍数和图片高度的压缩倍数的平均值:Size=(ImWidth/Width+ImHeight/Height)/2;
第二种压缩方式。(暴力 用勾股定理) 就是质量压缩
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos)
quatily取值范围为:0到1000代表质量最低,100则代表质量最高,如果是PNG格式的图片的话,忽视了质量值的设置,就会造成图片的失真。