首先咱们看一下后端压缩
1、需要用到thumbnailator 插件
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
2、压缩过程非常简单调用一下方法即可
//开始缩放图片
InputStream is = new FileInputStream(newfile);
BufferedImage bi = ImageIO.read(is);
int width = bi.getWidth();
System.out.println("111---"+width);
先拿到这个图片文件。看一下尺寸。需不需要缩放。 如果需要缩放。 执行下面的代码 文件路径:fileFolder + File.separator + randStr + ImgName
质量:scale
尺寸:outputQuality
输出路径:toFile 这里选择了覆盖
尺寸跟质量 约靠近1越保真
Thumbnails.of(fileFolder + File.separator + randStr + ImgName)
.scale(0.5f)
.outputQuality(0.7f)
.toFile(fileFolder + File.separator + randStr + ImgName);
3、压缩成功后返回wangedit所规定的上传图片返回格式
Map<String, Object> map = new HashMap();
map.put("errno", 0);
List<String> list = new ArrayList<>();
list.add(strDirPath);
map.put("data", list);
//map.put("FilePath", fileFolder + File.separator + randStr + ImgName);
JSONObject json = new JSONObject(map);
response.getWriter().print(json.toJSONString());
前端图片压缩。 如果光上传到后端。后端压缩的话。 会比较慢。所以在前端也进行压缩
1、引入前端压缩JS文件 (LRZ压缩)
GIT的下载地址
https://github.com/think2011/localResizeIMG
<script src="${ctxPath}/layer/lrz.all.bundle.js"></script>
2、wangedit3自定义上传
editor1.customConfig.customUploadImg = function (files, insert) {
// files 是 input 中选中的文件列表
lrz(files[0])
.then(function (rst) {
console.log(rst.file);
var formData = new FormData();
formData.append("file", rst.file);
$.ajax({
url: "/imgup/upLoad/fileUpload",
type: "POST",
data: formData,
contentType: false,
processData: false,
success: function (data) {
insert(data.data[0]);
},
error: function () {
alert("上传失败!");
}
});
})
.catch(function (err) {
// 处理失败会执行
console.log(rst);
})
.always(function () {
// 不管是成功失败,都会执行
console.log(rst);
});
}
这样就压缩成功啦!