图片压缩

使用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("源图片压缩异常");
        }
    }
}


 

原文地址:https://www.cnblogs.com/use-D/p/12622659.html