package com.moral.andbrickslib.compresshelper;
|
|
import android.content.Context;
|
import android.graphics.Bitmap;
|
import android.net.Uri;
|
|
import java.io.File;
|
|
/**
|
* 压缩方法工具类
|
*
|
* Author: nanchen
|
* Email: liushilin520@foxmail.com
|
* Date: 2017-03-08 9:03
|
*/
|
|
public class CompressHelper {
|
private static volatile CompressHelper INSTANCE;
|
private Context context;
|
/**
|
* 最大宽度,默认为720
|
*/
|
private float maxWidth = 640.0f;
|
/**
|
* 最大高度,默认为960
|
*/
|
private float maxHeight = 800.0f;
|
/**
|
* 默认压缩后的方式为JPEG
|
*/
|
private Bitmap.CompressFormat compressFormat = Bitmap.CompressFormat.JPEG;
|
|
/**
|
* 默认的图片处理方式是ARGB_8888
|
*/
|
private Bitmap.Config bitmapConfig = Bitmap.Config.ARGB_8888;
|
/**
|
* 默认压缩质量为80
|
*/
|
private int quality = 80;
|
/**
|
* 存储路径
|
*/
|
private String destinationDirectoryPath;
|
private String fileNamePrefix;
|
/**
|
* 文件名
|
*/
|
private String fileName;
|
|
|
private CompressHelper(Context context) {
|
this.context = context;
|
destinationDirectoryPath = context.getCacheDir().getPath() + File.pathSeparator + FileUtil.FILES_PATH;
|
}
|
|
public static CompressHelper getDefault(Context context) {
|
if (INSTANCE == null) {
|
synchronized (CompressHelper.class) {
|
if (INSTANCE == null) {
|
INSTANCE = new CompressHelper(context);
|
}
|
}
|
}
|
return INSTANCE;
|
}
|
|
/**
|
* 压缩成文件
|
* @param file 原始文件
|
* @return 压缩后的文件
|
*/
|
public File compressToFile(File file) {
|
return ImageUtil.compressImage(context, Uri.fromFile(file), maxWidth, maxHeight,
|
compressFormat, bitmapConfig, quality, destinationDirectoryPath,
|
fileNamePrefix, fileName);
|
}
|
|
/**
|
* 压缩为Bitmap
|
* @param file 原始文件
|
* @return 压缩后的Bitmap
|
*/
|
public Bitmap compressToBitmap(File file) {
|
return ImageUtil.getScaledBitmap(context, Uri.fromFile(file), maxWidth, maxHeight, bitmapConfig);
|
}
|
|
/**
|
* 采用建造者模式,设置Builder
|
*/
|
public static class Builder {
|
private CompressHelper mCompressHelper;
|
|
public Builder(Context context) {
|
mCompressHelper = new CompressHelper(context);
|
}
|
|
/**
|
* 设置图片最大宽度
|
* @param maxWidth 最大宽度
|
*/
|
public Builder setMaxWidth(float maxWidth) {
|
mCompressHelper.maxWidth = maxWidth;
|
return this;
|
}
|
|
/**
|
* 设置图片最大高度
|
* @param maxHeight 最大高度
|
*/
|
public Builder setMaxHeight(float maxHeight) {
|
mCompressHelper.maxHeight = maxHeight;
|
return this;
|
}
|
|
/**
|
* 设置压缩的后缀格式
|
*/
|
public Builder setCompressFormat(Bitmap.CompressFormat compressFormat) {
|
mCompressHelper.compressFormat = compressFormat;
|
return this;
|
}
|
|
/**
|
* 设置Bitmap的参数
|
*/
|
public Builder setBitmapConfig(Bitmap.Config bitmapConfig) {
|
mCompressHelper.bitmapConfig = bitmapConfig;
|
return this;
|
}
|
|
/**
|
* 设置压缩质量,建议80
|
* @param quality 压缩质量,[0,100]
|
*/
|
public Builder setQuality(int quality) {
|
mCompressHelper.quality = quality;
|
return this;
|
}
|
|
/**
|
* 设置目的存储路径
|
* @param destinationDirectoryPath 目的路径
|
*/
|
public Builder setDestinationDirectoryPath(String destinationDirectoryPath) {
|
mCompressHelper.destinationDirectoryPath = destinationDirectoryPath;
|
return this;
|
}
|
|
public Builder setFileNamePrefix(String prefix) {
|
mCompressHelper.fileNamePrefix = prefix;
|
return this;
|
}
|
|
/**
|
* 设置文件名称
|
* @param fileName 文件名
|
*/
|
public Builder setFileName(String fileName) {
|
mCompressHelper.fileName = fileName;
|
return this;
|
}
|
|
public CompressHelper build() {
|
return mCompressHelper;
|
}
|
}
|
}
|