bitmap图片压缩-图片压缩那些事
图片压缩的三种方式

1、等比压缩,等比压缩是保持原图长宽比例的压缩,只是图片变小,展示的还是原图的所有内容(区别于第二种通过Matrix压缩,可以选取图片的一部分,类似于上传头像时,让你在图上选一块zoom的形式)。等比压缩用的的主要是,通过options缩放比例的设置,来生成缩略图:
2、通过Matrix进行更加灵活的缩放:这种方式主要是通过构建缩放矩阵和方法来实现灵活缩放,宽和高缩放的比例可以不一致,而且通过方法创建出来的是新的位图,这个位图可以是选取原图的一部分,而不是对原图进行整体缩放!类似于上传头像时,让你在原图上扣下来一块的效果,控制非常灵活。
3、无损压缩,无损压缩是说图片大小和清晰度看上去和原图没有什么差别,但是确实size缩小了,这里缩小的原理是牺牲了分辨率等其他直观看不到的东西,看起来和原图一样,但是一放大就立马失真了,不会和原图一样放大很多才会逐渐变得不清晰。无损压缩后的图片像素并不会减少,而Bitmap占用内存的定义就是像素点占的内存,所以以Bitmap的方式加载到内存中时,和压缩前占用的内存是同样大的,原来会oom的图片,质量压缩后同样会oom;但是,质量压缩后将流输出到文件中,文件的size会大幅度减小,所以质量压缩特别适合在 Android 端进行图片上传的时候进行图片压缩,既能保持上传后的清晰度,又能减小size。另外质量压缩不是可以无限缩小的,降低到一定程度,就算把quality设置的再小,size也不会再降低了。另外这种方式最好返回保存压缩后的图片保存的文件路径,而不要直接返回Bitmap,示例就懒得改了。
一张图片处理过程,建议先进行等比压缩或者Matrix压缩后,再进行质量压缩,这样组合使用,不管是生成缩略图还是图片上传,效果都不错
Android黑科技,图片终极压缩

一、支持自定义配置、不失真和批量处理
二、图片上传为什么要压缩
1、图片服务器空间限制,磁盘昂贵
2、网络不稳定,大文件需要断点续传
3、尽可能避免安卓OOM异常
4、后台约定的规则<200KB
5、需要上传原图的应用有医院临床项目、金融银行
三、图片压缩流程
1、递归每张图片
2、设置图片格式
png, jpg,webp
3、质量压缩(format,quality,baos)
由于png是无损压缩,所以设置quality无效(不适合作为缩略图)
采样率压缩
缩小图片分辨率,减少所占用磁盘空间和内存大小
缩放压缩(bitmap, null,rectF,null)
减少图片的像素,降低所占用磁盘空间大小和内存大小,可用于缓存缩略图
JNI调用JPEG库
Android的图片引擎使用的是阉割版的skia引擎,去掉了图片压缩中的哈夫曼算法
4、像素修复
5、返回压缩
6、完成压缩
demo:
参考:
Luban框架
缺点
1、当没有设定压缩路径时,抛异常无闪退
2、源码中,压缩比率固定值60,无法修改
3、压缩配置,参数不太适应真实项目需求
4、不能指定压缩大小,比如100KB以内
图片压缩那些事

我们在项目开发过程中,可能或多或少的都会有对图片操作,而且一般情况在app当中涉及到内存泄露、或者apk体积增大等方面,绝大部分原因就是图片的问题,要么图片体积比较大、或者一次加载图片比较多等等,所以个人觉得,只要想对app瘦身、减小app体积、避免内存泄露等等这些问题,同时,为了避免OOM内存泄露,几乎所有的app都会对大图片进行压缩的,这点是毋庸置疑的,所以说只要把图片处理好,可以说就已经解决了绝大部分的问题,那么这篇文章就来针对图片压缩的原因、常见图片压缩方法做一个简单的总结。
文件和流的形式对图片体积大小没影响,也就是说,如果手机SD卡上的是100k,以流的形式读到内存中也是100k,如果图片以Bitmap形式存在,内存会瞬间增大;
文件形式:()
流的形式:将图片文件读到 内存输入流中,看它的byte数;
Bitmap:()
如果图片是要上传的,那么 几M大小肯定不行,所以就必须得压缩;
如果图片要显示在android 设备上,ImageView最终是要加载bitmap对象的,所以就要考虑单个 Bitmap对象占用多少内存;
bitmap内存大小 = 图片长度 * 图片宽度 * 单位像素占用字节数
bitmap常见有2种编码方式,ARGB_8888、RGB――565,前者每个像素点是4byte(字节),后者是2个byte(字节),ARGB_8888比较常用。
1080 * 1920 * 4 = 7.9M
保持原图长宽比例的压缩,只是图片变小,展示的还是原图的所有内容,用的是,通过options设置缩放比例,生成缩略图;
inSimpleSize(采样率):
优点:效率较高,解析速度快;
缺点:inSimpleSize取值只能是 2的次方数,不能精确指定图片大小;
宽高缩放比例可以不一致,通过()方法创建出新的位图,这个位图可以选取图片一部分,而不是整体压缩,类似于QQ上传头像,让你在图片上选择任何一块 zoom的形式,控制非常灵活;
意思就是图片大小、清晰度和原图看上去没什么区别,但是大小缩小了,缩小原理就是牺牲了分辨率等其他直观看不到的东西,看上去和原图一样,但是放大立马失真,不像原图只有放大后才会不清晰
-
果盘绘画图片大全简单创作方法快速制作技巧2024-01-02 16:57:54
-
小年插画图片创作方法快速制作技巧2024-01-02 16:57:20
-
小年绘画作品制作技巧2024-01-02 16:55:45
-
小年插画图片创作方法快速制作技巧2024-01-02 16:55:02
-
立春插画图片如何制作2024-01-02 16:54:19
-
立春插画图片创作方法快速制作技巧2024-01-02 16:53:32






扫描二维码添加客服微信
扫描二维码关注