Commit 0987d6e9 authored by fangxinjiang's avatar fangxinjiang

上传文件大小压缩到1M以内-fxj

parent fef5f3fb
......@@ -12,11 +12,14 @@ import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialFriendBackLog;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Base64;
/**
......@@ -55,6 +58,8 @@ public class ExcelToImage {
// 上传税友文件服务器,返回文件路径
file = new File(projectRoot+toImag);
if (file.exists()){
// file 压缩到1M以内
file = compressImage(projectRoot, toImag, 1024 * 1024);
String key = System.currentTimeMillis() + file.getName();
byte[] fileContent = Files.readAllBytes(file.toPath());
String base64String = Base64.getEncoder().encodeToString(fileContent);
......@@ -80,6 +85,24 @@ public class ExcelToImage {
}
return R.failed(CommonConstants.RESULT_DATA_FAIL);
}
//压缩文件到指定大小
private File compressImage(String projectRoot, String toImag, int maxSize) throws IOException {
File originalFile = Paths.get(projectRoot, toImag).toFile();
BufferedImage image = ImageIO.read(originalFile);
int quality = 100; // 从100%开始
File compressedFile = new File(projectRoot, "compressed_" + toImag);
while (originalFile.length() > maxSize && quality > 10) {
quality -= 5;
ImageIO.write(image, "png", compressedFile);
if (compressedFile.length() < maxSize) {
originalFile.delete();
compressedFile.renameTo(originalFile);
break;
}
compressedFile.delete();
}
return originalFile;
}
public R<URL> excelToImg(InputStream inputStream ,OSSUtil ossUtil){
if (null == inputStream || null == ossUtil){
return R.failed(CommonConstants.RESULT_DATA_FAIL+toImagParamError);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment