使用google的工具类
<!--google图片压缩工具类-->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.11</version>
</dependency>
import com.alibaba.fastjson.JSON; import org.apache.commons.lang3.StringUtils; import java.io.Serializable; public class ResultData<T> implements Serializable { private int code; private String message; private T data; public ResultData(int code, String message, T data) { this.code = code; this.message = message; this.data = data; } public static ResultData success(Object data) { return new ResultData(0, "操作成功", data); } public static ResultData fail(String message) { if (StringUtils.isBlank(message)) { message = "操作失败"; } return new ResultData(-1, message, null); } public Boolean isSuccess() { return 0 == code; } public Boolean isFail() { return -1 != code; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public T getData() { return data; } public void setData(T data) { this.data = data; } }
/** * 图片压缩大小工具类:使用google提供的thumbnailator包进行处理 */ public class ImageCompressionUtil { /** * @param sourceFilePath 源图片文件完整路径:/Usr/source/image/header.jpg * @param targetFileDir 生成图片具体地址:/Usr/target/image/ * @param targetfileName 生成文件名称:targetHeader * @param targetFileSuffix 生成文件别名:png * @param scale 图片长度:0~1 * @param quality 压缩比例:0~1 * @return */ public static ResultData<String> compressionImage(String sourceFilePath, String targetFileDir, String targetfileName, String targetFileSuffix, float scale, float quality) { String targetFile; try { File sourceFile = new File(sourceFilePath); if (!sourceFile.isFile()) { return ResultData.fail("源图片地址必须是完整图片路径+图片名称"); } if (!sourceFile.exists()) { return ResultData.fail("源图片不存在"); } File targetFilePath = new File(targetFileDir); if (!targetFilePath.isDirectory()) { return ResultData.fail("targetFileDir必须是路径"); } if (scale <= 0 || scale > 1) { return ResultData.fail("图片长度0~1"); } if (quality <= 0 || quality > 1) { return ResultData.fail("压缩比例0~1"); } StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append(targetFileDir).append(targetfileName).append(".").append(targetFileSuffix); Thumbnails.of(sourceFilePath) .scale(scale) .outputQuality(quality) .toFile(stringBuffer.toString()); return ResultData.success(stringBuffer); } catch (Exception ex) { ex.printStackTrace(); return ResultData.fail("源图片压缩异常"); } } }