|
@@ -14,6 +14,12 @@ import org.apache.http.protocol.HTTP;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.commons.CommonsMultipartFile;
|
|
import org.springframework.web.multipart.commons.CommonsMultipartFile;
|
|
|
|
|
|
|
|
+import javax.imageio.IIOImage;
|
|
|
|
+import javax.imageio.ImageIO;
|
|
|
|
+import javax.imageio.ImageWriteParam;
|
|
|
|
+import javax.imageio.ImageWriter;
|
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
|
+import java.awt.image.ColorModel;
|
|
import java.io.*;
|
|
import java.io.*;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Files;
|
|
|
|
|
|
@@ -73,6 +79,7 @@ public class FileUploadUtil {
|
|
IOUtils.copy(input, os);
|
|
IOUtils.copy(input, os);
|
|
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
|
|
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
|
|
String url = FileManager.upload(multipartFile);
|
|
String url = FileManager.upload(multipartFile);
|
|
|
|
+// compressPic(url, url);
|
|
return url;
|
|
return url;
|
|
}
|
|
}
|
|
}catch (Exception e){
|
|
}catch (Exception e){
|
|
@@ -80,7 +87,61 @@ public class FileUploadUtil {
|
|
}
|
|
}
|
|
return "";
|
|
return "";
|
|
}
|
|
}
|
|
|
|
+ public static boolean compressPic(String srcFilePath, String descFilePath) throws IOException {
|
|
|
|
+ File file = null;
|
|
|
|
+ BufferedImage src = null;
|
|
|
|
+ FileOutputStream out = null;
|
|
|
|
+ ImageWriter imgWrier;
|
|
|
|
+ ImageWriteParam imgWriteParams;
|
|
|
|
|
|
|
|
+ // 指定写图片的方式为 jpg
|
|
|
|
+ imgWrier = ImageIO.getImageWritersByFormatName("jpg").next();
|
|
|
|
+ imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(
|
|
|
|
+ null);
|
|
|
|
+ // 要使用压缩,必须指定压缩方式为MODE_EXPLICIT
|
|
|
|
+ imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);
|
|
|
|
+ // 这里指定压缩的程度,参数qality是取值0~1范围内,
|
|
|
|
+ imgWriteParams.setCompressionQuality((float)1);
|
|
|
|
+ imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);
|
|
|
|
+ ColorModel colorModel = ImageIO.read(new File(srcFilePath)).getColorModel();// ColorModel.getRGBdefault();
|
|
|
|
+ // 指定压缩时使用的色彩模式
|
|
|
|
+// imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(
|
|
|
|
+// colorModel, colorModel.createCompatibleSampleModel(16, 16)));
|
|
|
|
+ imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(
|
|
|
|
+ colorModel, colorModel.createCompatibleSampleModel(16, 16)));
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ if (isBlank(srcFilePath)) {
|
|
|
|
+ return false;
|
|
|
|
+ } else {
|
|
|
|
+ file = new File(srcFilePath);
|
|
|
|
+ System.out.println(file.length());
|
|
|
|
+ src = ImageIO.read(file);
|
|
|
|
+ out = new FileOutputStream(descFilePath);
|
|
|
|
+
|
|
|
|
+ imgWrier.reset();
|
|
|
|
+ // 必须先指定 out值,才能调用write方法, ImageOutputStream可以通过任何
|
|
|
|
+ // OutputStream构造
|
|
|
|
+ imgWrier.setOutput(ImageIO.createImageOutputStream(out));
|
|
|
|
+ // 调用write方法,就可以向输入流写图片
|
|
|
|
+ imgWrier.write(null, new IIOImage(src, null, null),
|
|
|
|
+ imgWriteParams);
|
|
|
|
+ out.flush();
|
|
|
|
+ out.close();
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static boolean isBlank(String string) {
|
|
|
|
+ if (string == null || string.length() == 0 || string.trim().equals("")) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
|
|
private static void deleteFile(File dirFile){
|
|
private static void deleteFile(File dirFile){
|
|
if(dirFile.exists()){
|
|
if(dirFile.exists()){
|