为了简化对图片压缩的调用,提供最简洁与合理的api压缩逻辑,对于压缩为Bitmap根据屏幕分辨率动态适配最佳大小,对于压缩为File优化底层libjpeg的压缩,整个图片压缩过程全在压缩线程池中异步压缩,结束后分发回UI线程。
支持的压缩类型
Tiny图片压缩框架支持的压缩数据源类型:
1、Bytes2、File3、Bitmap4、Stream5、Resource6、Uri(network、file、content)
Tiny支持单个数据源压缩以及批量压缩,支持的压缩类型:
1、数据源—>压缩为Bitmap2、数据源—>压缩为File3、数据源—>压缩为File并返回压缩后的Bitmap4、批量数据源—>批量压缩为Bitmap5、批量数据源—>批量压缩为File6、批量数据源—>批量压缩为File并返回压缩后Bitmap
压缩参数
Tiny.BitmapCompressOptions
Bitmap压缩参数可配置三个:
1、width2、height3、Bitmap.Config
如果不配置,Tiny内部会根据屏幕动态适配以及默认使用ARGB_8888
Tiny.FileCompressOptions
File压缩参数可配置四个:
1、quality-压缩质量,默认为762、isKeepSampling-是否保持原数据源图片的宽高3、fileSize-压缩后文件大小4、outfile-压缩后文件存储路径
如果不配置,Tiny内部会根据默认压缩质量进行压缩,压缩后文件默认存储在:ExternalStorage/Android/data/${packageName}/tiny/目录下
Tiny项目地址: https://github.com/tianyingzhong/Tiny
Tiny与微信朋友圈的压缩率比较
下面是使用Tiny图片压缩库进行压缩的效果对比示例:
压缩为Bitmap
Tiny.BitmapCompressOptions options = new Tiny.BitmapCompressOptions();Tiny.getInstance().source("").asBitmap().withOptions(options).compress(new BitmapCallback() { @Override public void callback(boolean isSuccess, Bitmap bitmap) { //return the compressed bitmap object }});
压缩为File
Tiny.FileCompressOptions options = new Tiny.FileCompressOptions();Tiny.getInstance().source("").asFile().withOptions(options).compress(new FileCallback() { @Override public void callback(boolean isSuccess, String outfile) { //return the compressed file path }});
压缩为File并返回Bitmap
Tiny.FileCompressOptions options = new Tiny.FileCompressOptions();Tiny.getInstance().source("").asFile().withOptions(options).compress(new FileWithBitmapCallback() { @Override public void callback(boolean isSuccess, Bitmap bitmap, String outfile) { //return the compressed file path and bitmap object }});
批量压缩为Bitmap
Tiny.BitmapCompressOptions options = new Tiny.BitmapCompressOptions();Tiny.getInstance().source("").batchAsBitmap().withOptions(options).batchCompress(new BitmapBatchCallback() { @Override public void callback(boolean isSuccess, Bitmap[] bitmaps) { //return the batch compressed bitmap object }});
批量压缩为File
Tiny.FileCompressOptions options = new Tiny.FileCompressOptions();Tiny.getInstance().source("").batchAsFile().withOptions(options).batchCompress(new FileBatchCallback() { @Override public void callback(boolean isSuccess, String[] outfile) { //return the batch compressed file path }});
批量压缩为File并返回Bitmap
Tiny.FileCompressOptions options = new Tiny.FileCompressOptions();Tiny.getInstance().source("").batchAsFile().withOptions(options).batchCompress(new FileWithBitmapBatchCallback() { @Override public void callback(boolean isSuccess, Bitmap[] bitmaps, String[] outfile) { //return the batch compressed file path and bitmap object }});
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
失败是成功的亲娘,没有失败哪来的成功呢?诺贝尔如果不经历千万次的失败,