Android高仿微信图片压缩

Biscuit

Biscuit是一个便捷的android 压缩图片库。由于微信是行业标杆,所以在写本库的时候,特意研究了下微信的压缩效果,以在小米NOTE LTE上为例,经过观察微信压缩效果,逆向推算出微信可能的压缩方式,发现微信很大概率上采用缩放压缩方式。于是本库采用两种压缩方式(采样率、缩放)供使用者选择使用,默认是采用和微信一样的缩放压缩方式并且效果非常接近!详见下面比较!

功能

  • 可以传入一张或列表(批量)进行压缩
  • 可以自定义保存路径
  • 可以自定义压缩后是否使用原图名字命名
  • 可以自定义压缩质量范围
  • 可以选择缩放压缩或者采样率压缩
  • 可以自定义执行器
  • 可以自定义是否忽略透明度(忽略则质量差些,大小也将减小一半)
  • 压缩前检查是否会引发OOM风险,避免程序Crash
  • 可以清除缓存
  • 压缩后拓展名不变。
  • 可以控制log输出
  • 可以设置忽略压缩阈值,小于阈值不压缩直接返回原图路径

压缩效果对比

先一睹为快!左边是微信压缩,右边是Biscuit压缩效果:
<a><img src="http://upload-images.jianshu.io/upload_images/6612546-64035d83da1ec229.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width="45%"/></a><a><img src="http://upload-images.jianshu.io/upload_images/6612546-0008c4777e155c96.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width="45%"/></a>

上图中八张图片压缩数据对比:

原图 Biscuit Wechat
3120*4160/2.96MB 960*1280/61.58KB 960*1280/61.49KB
1080*9594/6.12MB 1019*9054/880.59KB 1019*9048/801.13KB
1080*5712/3.12MB 1080*5712/622.3KB 1080*5712/621.7KB
1080*2904/311KB 1080*2904/202.8KB 1080*2904/213.24KB
1080*1920/805KB 720*1280/122.2KB 720*1280/118.7KB
3120*4160/3.3MB 960*1280/100.56KB 960*1280/99.18KB
3120*4160/3.39MB 960*1280/93.5KB 960*1280/93.87KB
4160*3120/3.28MB 1280*960/72.57KB 1280*960/71.08KB

可以看到压缩后的图片宽高和微信非常一致!!!图片大小也几乎相等!!!

使用方法

Step 1. 在你项目根gradle文件中加入:


allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

Step 2. 在你项目app模块的gradle文件添加如下依赖


dependencies {

compile 'com.github.pruas:Biscuit:v1.0.6'

}

Step 3. 在任何你需要压缩图片的地方,添加如下代码:


Biscuit.with(this)
        .path(photos)
        .listener(mCompressListener)//压缩监听
        .build();

或者你可以自定义一些其他参数,如下:


Biscuit.with(this)
      .path(photos) //可以传入一张图片路径,也可以传入一个图片路径列表
      .loggingEnabled(true)//是否输出log 默认输出
//    .quality(50)//质量压缩值(0...100)默认已经非常接近微信,所以没特殊需求可以不用自定义
      .originalName(true) //使用原图名字来命名压缩后的图片,默认不使用原图名字,随机图片名字
      .listener(mCompressListener)//压缩监听
      .targetDir(FileUtils.getImageDir())//自定义压缩保存路径
//    .executor(executor) //自定义实现执行,注意:必须在子线程中执行 默认使用AsyncTask线程池执行
//    .ignoreAlpha(true)//忽略alpha通道,对图片没有透明度要求可以这么做,默认不忽略。
//    .compressType(Biscuit.SAMPLE)//采用采样率压缩方式,默认是使用缩放压缩方式,也就是和微信的一样。
      .ignoreLessThan(100)//忽略小于100kb的图片不压缩,返回原图路径
      .build();

如果没有自定义指定缓存路径,默认清除缓存直接调用:


Biscuit.clearCache(this);// default

如果自定义路径,则需要传入自定义的路径:


Biscuit.clearCache(FileUtils.getImageDir());//when you have set custom dir

说明

本库是在单一手机上测试,小米Note 1080*1920,所以如果你在使用本库过程中遇到什么问题,欢迎给我提Issues去GitHub查看

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容