您的位置:首页 > 移动开发 > Android开发

Android图片压缩框架-Tiny

2017-04-27 14:22 411 查看

目的

为了简化对图片压缩的调用,提供最简洁与合理的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/目录下

接入

见项目README

压缩为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
}
});


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

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

图片信息TinyWechat
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)

Tiny项目地址

Tiny

也谈图片压缩

参考:http://zhengxiaoyong.me/2017/04/23/Android%E5%9B%BE%E7%89%87%E5%8E%8B%E7%BC%A9%E6%A1%86%E6%9E%B6-Tiny/?utm_source=tuicool&utm_medium=referral
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: