From 86384846e317381e7bb9e31ee76760e4ecb3ee67 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Mon, 29 Jul 2024 11:49:57 +0800
Subject: [PATCH] 新增2m压缩图,修改喇叭功能,修改面状航线的修改接口

---
 src/main/java/com/dji/sample/territory/utils/ImgZipUtil.java |   39 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 38 insertions(+), 1 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 365d195..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,5 +1,7 @@
 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;
@@ -22,7 +24,7 @@
         BufferedImage image = ImageIO.read(inputFile);
 
         // 计算目标图片的尺寸
-        long targetSizeBytes = targetSizeKB * 1024;
+        long targetSizeBytes = targetSizeKB * 1024L;
         long originalSizeBytes = getImageSize(image);
         double compressionRatio = (double) targetSizeBytes / originalSizeBytes;
         int targetWidth = (int) (image.getWidth() * Math.sqrt(compressionRatio));
@@ -54,4 +56,39 @@
             return 0;
         }
     }
+
+    /**
+     * 图片压缩
+     *
+     * @param originalImageFile
+     * @param compressionQuality 图片压缩质量 0-1
+     * @return
+     * @throws IOException
+     */
+    public static File compressImageAndGetFile(File originalImageFile, float compressionQuality) throws IOException {
+        BufferedImage originalImage = ImageIO.read(originalImageFile);
+        try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+            ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
+            try (ImageOutputStream ios = new MemoryCacheImageOutputStream(baos)) {
+                writer.setOutput(ios);
+                ImageWriteParam param = writer.getDefaultWriteParam();
+                param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+                param.setCompressionQuality(compressionQuality);
+                writer.write(null, new javax.imageio.IIOImage(originalImage, null, null), param);
+            } finally {
+                writer.dispose();
+            }
+            InputStream in = new ByteArrayInputStream(baos.toByteArray());
+            File tempFile = File.createTempFile("compressed-", ".jpg");
+            tempFile.deleteOnExit();
+            Files.copy(in, tempFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
+            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