概要
android中的图片是以bitmap的形式存在,那么bitmap所占内存,直接影响到了应用所占内存大小,首先要知道bitmap所占内存大小的计算公式:
图片长度 x 图片宽度 x 一个像素点占用的字节数
以下是图片的压缩格式:
质量压缩
|
|
质量压缩后图片的大小是没有变的,因为它不会减少图片的像素,它是在保持像素的前提下改变图片的位深及透明度等,来达到压缩图片的目的,所以最后bitmap所占内存大小是不会变的。但是bytes.length是随着quality变小而变小的,这样适合去传递二进制的图片数据。
采样率压缩
|
|
设置inSampleSize的值后,假设inSampleSize = 2,则宽和高都为原来的1 / 2,宽高都减少了,自然内存也降低了。
缩放法压缩(matrix)
|
|
使用matrix也是对图片的长度和宽度进行压缩。
RGB_565法
|
|
这种方法可以把图片大小直接缩小了一半,长度和宽度没有变化,相比ARGB_8888减少了一半的内存,本质上是改变编码像素的字节数来压缩的。
createScaledBitmap
|
|
这里是将图片压缩成用户所期望的长度和宽度,但是如果用户期望的长度和宽度与原图长度宽度相差太多的话,图片会很不清晰。
总结
Bitmap压缩都是围绕这个来做文章:Bitmap所占用的内存 = 图片长度 x 图片宽度 x 一个像素点占用的字节数。3个参数,任意减少一个的值,就达到了压缩的效果。