From 6983d37a86571465b5434e18806680c400d08ef6 Mon Sep 17 00:00:00 2001 From: yangjun <1173114630@qq.com> Date: Mon, 15 Jul 2024 17:19:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=8E=8B=E7=BC=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/file/utils/FileUploadUtils.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/main/java/com/sqx/modules/file/utils/FileUploadUtils.java b/src/main/java/com/sqx/modules/file/utils/FileUploadUtils.java index 362cddf..e9d2444 100644 --- a/src/main/java/com/sqx/modules/file/utils/FileUploadUtils.java +++ b/src/main/java/com/sqx/modules/file/utils/FileUploadUtils.java @@ -9,6 +9,7 @@ import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.multipart.MultipartFile; +import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import java.net.URL; @@ -116,9 +117,37 @@ public class FileUploadUtils //file.transferTo(desc); IoUtil.close(out); String pathFileName = getPathFileName(baseDir, fileName); + try { + File inputImageFile = new File(pathFileName); // 替换为实际图片路径 + byte[] compressedImage = compressImage(inputImageFile, 0.5f); // 压缩比例,如0.5表示压缩50% + + // 将压缩后的图片保存到文件 + File outputFile = new File(pathFileName); // 替换为输出图片路径 + ImageIO.write(ImageIO.read(new ByteArrayInputStream(compressedImage)), "png", outputFile); + } catch (IOException e) { + e.printStackTrace(); + } return pathFileName; } + public static byte[] compressImage(File imageFile, float scale) throws IOException { + BufferedImage originalImage = ImageIO.read(imageFile); + // 保存缩放后的图片到输出流 + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + Image compressedImage = originalImage.getScaledInstance( + (int)(originalImage.getWidth() * scale), + (int)(originalImage.getHeight() * scale), + Image.SCALE_SMOOTH); + BufferedImage outputImage = new BufferedImage( + compressedImage.getWidth(null), + compressedImage.getHeight(null), + BufferedImage.TYPE_INT_RGB); + + outputImage.createGraphics().drawImage(compressedImage, 0, 0, null); + ImageIO.write(outputImage, "png", outputStream); // 或者 "png" 如果是PNG图片 + + return outputStream.toByteArray(); + } /** * 编码文件名 */