为了简化对图片压缩的调用,提供最简洁与合理的api压缩逻辑,对于压缩为Bitmap根据屏幕分辨率动态适配最佳大小,对于压缩为File优化底层libjpeg
的压缩,整个图片压缩过程全在压缩线程池中异步压缩,结束后分发回UI线程。
支持的压缩类型
Tiny
图片压缩框架支持的压缩数据源类型:
1、Bytes
2、File
3、Bitmap
4、Stream
5、Resource
6、Uri(network、file、content)
Tiny
支持单个数据源压缩以及批量压缩,支持的压缩类型:
1、数据源—>压缩为Bitmap
2、数据源—>压缩为File
3、数据源—>压缩为File并返回压缩后的Bitmap
4、批量数据源—>批量压缩为Bitmap
5、批量数据源—>批量压缩为File
6、批量数据源—>批量压缩为File并返回压缩后Bitmap
压缩参数
Tiny.BitmapCompressOptions
Bitmap压缩参数可配置三个:
1、width
2、height
3、Bitmap.Config
如果不配置,Tiny
内部会根据屏幕动态适配以及默认使用ARGB_8888
Tiny.FileCompressOptions
File压缩参数可配置四个:
1、quality-压缩质量,默认为76
2、isKeepSampling-是否保持原数据源图片的宽高
3、fileSize-压缩后文件大小
4、outfile-压缩后文件存储路径
如果不配置,Tiny
内部会根据默认压缩质量进行压缩,压缩后文件默认存储在:ExternalStorage/Android/data/${packageName}/tiny/目录下
Tiny项目地址: https://github.com/tianyingzhong/Tiny
Tiny与微信朋友圈的压缩率比较
下面是使用Tiny图片压缩库进行压缩的效果对比示例:
图片信息 | Tiny | |
---|---|---|
6.66MB (3500x2156) | 151KB (1280x788) | 135KB (1280x789) |
4.28MB (4160x3120) | 219KB (1280x960) | 195KB (1280x960) |
2.60MB (4032x3024) | 193KB (1280x960)) | 173KB (1280x960) |
372KB (500x500) | 38.67KB (500x500) | 34.05KB (500x500) |
236KB (960x1280) | 127KB (960x1280) | 118KB (960x1280) |
压缩为Bitmap
1
|
Tiny.BitmapCompressOptions options = new Tiny.BitmapCompressOptions();
|
压缩为File
1
|
Tiny.FileCompressOptions options = new Tiny.FileCompressOptions();
|
压缩为File并返回Bitmap
1
|
Tiny.FileCompressOptions options = new Tiny.FileCompressOptions();
|
批量压缩为Bitmap
1
|
Tiny.BitmapCompressOptions options = new Tiny.BitmapCompressOptions();
|
批量压缩为File
1
|
Tiny.FileCompressOptions options = new Tiny.FileCompressOptions();
|
批量压缩为File并返回Bitmap
1
|
Tiny.FileCompressOptions options = new Tiny.FileCompressOptions();
|