由于公司项目APP对图片的处理较多,刚开始上手,到处OOM,实在让人脑壳疼!项目迭代到今天有10个月吧!对图片处理也有一些深刻的理解!看了市面上的传统压缩方法!压缩质量虽然可以,但是有些图片失真严重。故此,写一个图片压缩框架,供大家参考,欢迎提意见!
拓展性强:
1、可以自定义压缩图片的宽高(默认:1280*720);
2、默认压缩大小为150kb(可以根据自己需求设置),超过150kb压缩,小于不压缩;
3、一行代码解决。
1、 gradle依赖:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.Hu12037102:ImageCompress:1.0.2'
}
/**
*压缩一张图片
* @param imageConfig bean
* @param onImageResult file回调数据
*/
CompressImageTask.getInstance(MainActivity.this)
.compressImage(new ImageConfig(mImageFile.getAbsolutePath()), new CompressImageTask.OnImageResult() {
@Override
public void resultFileSucceed(File file) {//结果成功回调
Glide.with(MainActivity.this).load(mImageFile).into(mCompressImageView);
mCompressText.setText("Size:" + FileUtils.imageSize(file.length()));
}
@Override
public void resultFileError() {//结果失败回调
}
});
/**
*压缩多张图片(集合)
* @param list 图片集合
* @param onImagesResult file集合回调数据
*/
CompressImageTask.getInstance(MainActivity.this)
.compressImages(list, new CompressImageTask.OnImagesResult() {
@Override
public void resultFilesSucceed(List<File> fileList) {//结果成功回调
}
@Override
public void resultFilesError() {//结果失败回调
}
});
/**
*压缩生成bitmap
* @param imageConfig bean
* @param onBitmapResult bitnap结果回调
*/
CompressImageTask.getInstance(this)
.compressBitmap(new ImageConfig(mImageFile.getAbsolutePath()), new CompressImageTask.OnBitmapResult() {
@Override
public void resultBitmapSucceed(Bitmap bitmap) {//结果成功回调
}
@Override
public void resultBitmapError() {//结果失败回调
}
});
//关于bean类,默认压缩的高宽为1280*720
public class ImageConfig {
/**
* 压缩默认宽为720px
*/
public int compressWidth = 720;
/**
* 压缩默认长为1280px
*/
public int compressHeight = 1280;
public String imagePath;
public ImageConfig(String imagePath) {
this.imagePath = imagePath;
}
}
QQ:1069305953
邮箱:1069305953@qq.com
微博:Mr_胡小白二胡