图片压缩有两种方式:
1、有损压缩:通过丢失不会对文件造成太大影响的数据来达到压缩效果,所以压缩率高,如JPG。
2、无损压缩:通过对冗余数据的存储方式进行优化,该方式不会丢失文件内容,压缩率受冗余度的影响,所以压缩率降低,如PNG。
PNG压缩:
1、编译阶段(aapt打包工具进行压缩,40%以下)
2、api层调用方式(libpng)
注意:.9文件经过aapt打包之后会变大,因为生成了2-3个chunk块,而api层不会有影响。
图片格式:
RGB_565:每个像素占2个字节,R占5位、G占6位、B占5位,最多能表示65536种颜色。
RGB_888:每个像素占3个字节,RGB各占8位,最多能表示16777216种颜色。
RGB_4444:每个像素占2个字节,RGB各占4位,最多能表示4096种颜色,成像效果比较差。
ARGB_8888:每个像素占4,ARGB各占8位,最多能表示16777216种颜色,前8位位alpha(0~255),通道表示每个像素点的透明度。
WebP:支持alpha通道的有损压缩格式。
Bitmap
占用内存计算:宽*高*每个像素所占字节数
压缩:
1、减少虚拟机堆中所占用的内存大小
2、减少在硬盘中所占用的物理内存大小
压缩方式:
1、降低色彩位数(Bitmap.Config)
2、尺寸压缩(BitmapFactory.Options)
3、质量压缩(Bitmap.compress())
Tips:
对于一些高清的图片,建议放到assets目录中,避免在drawable中读取的时候占用内存过高(不同分辨率读取的文件夹不一样,没有同分辨率的图片则读取上一个的,直到默认的)。