/**
* 压缩文件方法
*
* @param filePath 原路径
* @return 返回新的文件对象(存储在原路径)
*/
public File compress(String filePath) {
//判断是否大于2MB,小于直接返回
File sourceFile = new File(filePath);
if (sourceFile.length() < 1024 * 1024 * 2) {
return sourceFile;
}
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;//只加载图像框架
BitmapFactory.decodeFile(filePath, options);
// 计算该图像压缩比例,可以调整这个值
options.inSampleSize = 6;
//设置加载全部图像内容
options.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
return saveBitmap(filePath, bitmap);
}
/**
* 存储文件
*
* @param path 原路径
* @param mBitmap 数据源
* @return
*/
public File saveBitmap(String path, Bitmap mBitmap) {
File filePic = null;
FileOutputStream fos = null;
try {
filePic = new File(path);
if (!filePic.exists()) {
filePic.getParentFile().mkdirs();
filePic.createNewFile();
} else {
filePic.delete();
}
fos = new FileOutputStream(filePic);
mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
return filePic;
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
if (null != fos) {
try {
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}