Android小集成图片压缩框架的使用

  

为了简化对图片压缩的调用,提供最简洁与合理的api压缩逻辑,对于压缩为位图根据屏幕分辨率动态适配最佳大小,对于压缩为文件优化底层libjpeg的压缩,整个图片压缩过程全在压缩线程池中异步压缩,结束后分发回UI线程。

  

<>强支持的压缩类型

  

小图片压缩框架支持的压缩数据源类型:

  

1字节   2、文件
  3位图
  4、流
  5、资源
  6,Uri(网络、文件内容)

  

小支持单个数据源压缩以及批量压缩,支持的压缩类型:

  

1,数据源→压缩为位图
  2、数据源→压缩为文件
  3、数据源→压缩为文件并返回压缩后的位图
  4、批量数据源→批量压缩为位图
  5批量数据源→批量压缩为文件
  6批量数据源→批量压缩为文件并返回压缩后位图

  

<强>压缩参数

  

<强> Tiny.BitmapCompressOptions

  

<>强位图压缩参数可配置三个:

  

1,宽度
  2、身高
  3,Bitmap.Config

  

如果不配置、小内部会根据屏幕动态适配以及默认使用ARGB_8888

  

<强> Tiny.FileCompressOptions

  

文件压缩参数可配置四个:

  

1、质量——压缩质量,默认为76
  2、isKeepSampling——是否保持原数据源图片的宽高
  3、文件大小——压缩后文件大小
  4、输出文件——压缩后文件存储路径

  

如果不配置、小内部会根据默认压缩质量进行压缩,压缩后文件默认存储在:ExternalStorage/Android/数据/$ {packageName}/?目录下

  

小项目地址:https://github.com/tianyingzhong/Tiny

  

小与微信朋友圈的压缩率比较

  

下面是使用微型图片压缩库进行压缩的效果对比示例:

  

           图片信息   小   微信               6.66 mb (3500 x2156)   151 kb (1280 x788)   135 kb (1280 x789)         4.28 mb (4160 x3120)   219 kb (1280 x960)   195 kb (1280 x960)         2.60 mb (4032 x3024)   193 kb (1280 x960))   173 kb (1280 x960)         372 kb (500 x500)   38.67 kb (500 x500)   34.05 kb (500 x500)         236 kb (960 x1280)   127 kb (960 x1280)   118 kb (960 x1280)
              

  

压缩为位图
  

        很小。BitmapCompressOptions选项=new Tiny.BitmapCompressOptions ();   Tiny.getInstance () .source (" ") .asBitmap () .withOptions(选项).compress(新BitmapCallback () {   @Override   公共空回调(布尔isSuccess,位图的位图){//返回压缩位图对象   }   });      

压缩为File 

        很小。FileCompressOptions选项=new Tiny.FileCompressOptions ();   Tiny.getInstance () .source (" ") .asFile () .withOptions(选项).compress(新FileCallback () {   @Override   公共空回调(布尔isSuccess字符串输出文件){//返回压缩的文件路径   }   });      

压缩为文件并返回位图

        很小。FileCompressOptions选项=new Tiny.FileCompressOptions ();   Tiny.getInstance () .source (" ") .asFile () .withOptions(选项).compress(新FileWithBitmapCallback () {   @Override   公共空回调(布尔isSuccess,位图的位图,字符串输出文件){//返回压缩文件路径和位图对象   }   });      

批量压缩为位图

        很小。BitmapCompressOptions选项=new Tiny.BitmapCompressOptions ();   Tiny.getInstance () .source (" ") .batchAsBitmap () .withOptions(选项)。batchCompress(新BitmapBatchCallback () {   @Override   公共空回调(布尔isSuccess,位图[]位图){//返回批量压缩位图对象   }   });      

批量压缩为文件

        很小。FileCompressOptions选项=new Tiny.FileCompressOptions ();   Tiny.getInstance () .source (" ") .batchAsFile () .withOptions(选项)。batchCompress(新FileBatchCallback () {   @Override   公共空回调(布尔isSuccess String[]输出文件){//返回批量压缩文件路径   }   });      

批量压缩为文件并返回位图
  

        很小。FileCompressOptions选项=new Tiny.FileCompressOptions ();   Tiny.getInstance () .source (" ") .batchAsFile () .withOptions(选项)。batchCompress(新FileWithBitmapBatchCallback () {   @Override   公共空回调(布尔isSuccess,位图[]位图,String[]输出文件){//返回批量压缩文件路径和位图对象   }   });   

Android小集成图片压缩框架的使用