android 无损压缩

现在的安卓手机一张图片好几M,但是还是不如iOS的感觉,iOS的图片也就1M左右吧。为什么会有这么大的差距呢?这要从安卓的设计初衷来说起,当时谷歌开发Android的时候,考虑了大部分手机的配置并没有那么高,所以对图片处理是使用的Skia这个库。当然这个库的底层还是是用的jpeg对图片进行压缩处理。但是为了能够适配低端的手机(这里的低端是指以前的硬件配置不高的手机),所以Skia在进行图片处理并没有去使用压缩图像过程中基于图像数据计算哈弗曼表(关于图片压缩中的哈弗曼表,请自行查阅相关资料),可以参考[这里](http://www.cnblogs.com/MaxIE/p/3951294.html)。这里面详细解释为何Google没有使用高性能的压缩,简单来说就是考虑了当时的手机硬件,将一个压缩参数optimize_coding设置为了false,使得硬件较低的手机能够很好的处理图片。

网上的很多压缩都是bitmap.compress()或设置BitmapFactory缩放比例,可以实现压缩但是图片压缩到几百k时,图片已经很模糊了,所以这种压缩弃用。

解决方法:调用jpeg库进行压缩

说明:https://blog.csdn.net/hh7181521/article/details/81014839 基于libjpeg-turbo来进行图片的压缩,使用了哈弗曼表,这大大的提高了相同体积下图片的清晰度

源码:https://github.com/840631861/ImageCompress

发布了76 篇原创文章 · 获赞 39 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_26075861/article/details/89406004