From 94174d2cc22afed6f41c270d970903484bfc5708 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Mon, 05 Aug 2024 16:06:18 +0800
Subject: [PATCH] SM2测试类

---
 src/main/java/com/dji/sample/territory/utils/ImgZipUtil.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/dji/sample/territory/utils/ImgZipUtil.java b/src/main/java/com/dji/sample/territory/utils/ImgZipUtil.java
index 39a842b..dd75f12 100644
--- a/src/main/java/com/dji/sample/territory/utils/ImgZipUtil.java
+++ b/src/main/java/com/dji/sample/territory/utils/ImgZipUtil.java
@@ -1,16 +1,62 @@
 package com.dji.sample.territory.utils;
 
+import com.dji.sample.media.service.impl.FileServiceImpl;
+
 import javax.imageio.ImageIO;
 import javax.imageio.ImageWriteParam;
 import javax.imageio.ImageWriter;
 import javax.imageio.stream.ImageOutputStream;
 import javax.imageio.stream.MemoryCacheImageOutputStream;
+import java.awt.*;
 import java.awt.image.BufferedImage;
 import java.io.*;
 import java.nio.file.Files;
 import java.nio.file.StandardCopyOption;
 
 public class ImgZipUtil {
+    /**
+     * 图片压缩
+     *
+     * @return
+     * @throws IOException
+     */
+    public static File compressImage(File inputFile, int targetSizeKB) throws IOException {
+        BufferedImage image = ImageIO.read(inputFile);
+
+        // 计算目标图片的尺寸
+        long targetSizeBytes = targetSizeKB * 1024L;
+        long originalSizeBytes = getImageSize(image);
+        double compressionRatio = (double) targetSizeBytes / originalSizeBytes;
+        int targetWidth = (int) (image.getWidth() * Math.sqrt(compressionRatio));
+        int targetHeight = (int) (image.getHeight() * Math.sqrt(compressionRatio));
+
+        // 使用ImageIO进行压缩
+        BufferedImage compressedImage = new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB);
+        Graphics2D graphics = compressedImage.createGraphics();
+        graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+        graphics.drawImage(image, 0, 0, targetWidth, targetHeight, null);
+        graphics.dispose();
+
+        // 将压缩后的图片写入输出文件
+        File outputFile = new File(inputFile.getParent(), "compressed_" + inputFile.getName());
+        ImageIO.write(compressedImage, "jpeg", outputFile);
+        return outputFile;
+    }
+
+    public static long getImageSize(BufferedImage image) {
+        File tempFile;
+        try {
+            tempFile = File.createTempFile("temp", ".tmp");
+            ImageIO.write(image, "jpg", tempFile);
+            long size = tempFile.length();
+            tempFile.delete();
+            return size;
+        } catch (IOException ex) {
+            ex.printStackTrace();
+            return 0;
+        }
+    }
+
     /**
      * 图片压缩
      *
@@ -39,4 +85,10 @@
             return tempFile;
         }
     }
+
+    public static void main(String[] args) throws IOException {
+        String name="test/瑞金图片.jpeg";
+        File file=compressImageAndGetFile(new File("D:\\ideawork\\used-car\\src\\main\\resources\\DJI_20240712113312_0007_V_航点dkbh2_null.jpeg"),0.5F);
+        FileServiceImpl.uploadFile("http://139.196.74.78:9000", "sxkj", "sxkj2024", "cloud-bucket", name, file, "image/jpeg");
+    }
 }

--
Gitblit v1.9.3