From a2d81eff7490d9ef2e5fb45727ad86f7770c55cd Mon Sep 17 00:00:00 2001
From: feige <feige@qq.com>
Date: 星期一, 05 一月 2026 15:08:03 +0800
Subject: [PATCH] Merge branch 'master' of http://47.93.189.255:8099/r/zhangshi_app_backend

---
 zhang-content/src/main/java/com/ruoyi/domain/MediaCompressRequest.java          |   13 ++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java |   61 +++++++++-----------
 ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java     |    2 
 zhang-content/src/main/java/com/ruoyi/service/impl/VideoProcessService.java     |   70 ++++++++++++++---------
 4 files changed, 83 insertions(+), 63 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
index 4a03034..1e6e1d1 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
@@ -24,6 +24,7 @@
 import com.ruoyi.common.annotation.Anonymous;
 import com.ruoyi.common.utils.RenamedMultipartFile;
 import com.ruoyi.common.utils.uuid.UUID;
+import com.ruoyi.domain.MediaCompressRequest;
 import com.ruoyi.service.DownLoadFileService;
 import com.ruoyi.service.impl.VideoProcessService;
 import lombok.Data;
@@ -515,47 +516,40 @@
 
     /**
      * 鍘嬬缉鍥剧墖鎴栨彁鍙栬棰戝皝闈㈠苟杩斿洖Base64
-     *
-     * @param file 鍥剧墖鎴栬棰戞枃浠�
-     * @param width 鐩爣瀹藉害锛岄粯璁�100
-     * @param height 鐩爣楂樺害锛岄粯璁�100
-     * @param quality 鍥剧墖璐ㄩ噺 0.1-1.0锛岄粯璁�0.8
+     * @param mediaCompressRequest
+     * 鍖呮嫭
+     *  file 鍥剧墖鎴栬棰戞枃浠�
+     * width 鐩爣瀹藉害锛岄粯璁�100
+     * height 鐩爣楂樺害锛岄粯璁�100
+     *  quality 鍥剧墖璐ㄩ噺 0.1-1.0锛岄粯璁�0.8
      * @return Map鍖呭惈鍘嬬缉缁撴灉鍜孊ase64
      */
     @Anonymous
-    @PostMapping(value = "/images/zip", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    public Map<String, Object> compressMediaToBase64(
-        @RequestParam(value = "file", required = false) MultipartFile file,
-        @RequestParam(value = "filePath", required = false) String filePath,
-        @RequestParam(value = "width", defaultValue = "0") int width,
-        @RequestParam(value = "height", defaultValue = "0") int height,
-        @RequestParam(value = "quality", defaultValue = "0.8") float quality) {
+    @PostMapping(value = "/images/zip")
+    public Map<String, Object> compressMediaToBase64(@RequestBody MediaCompressRequest mediaCompressRequest) {
         Map<String, Object> result = new HashMap<>();
 
+        if (mediaCompressRequest == null && mediaCompressRequest.getFilePath() == null){
+            result.put("success", false);
+            result.put("message", "鏂囦欢涓嶈兘涓虹┖");
+            return result;
+        }
+
+        String filePath = mediaCompressRequest.getFilePath();
+        int width = mediaCompressRequest.getWidth();
+        int height = mediaCompressRequest.getHeight();
+        float quality = mediaCompressRequest.getQuality();
+
+        System.out.println("--------------"+mediaCompressRequest);
+
         File trueFile;
-        boolean deleteY = true;
 
         try {
-            // 楠岃瘉鏂囦欢
-            if ((file == null || file.isEmpty()) && filePath == null ) {
-                result.put("success", false);
-                result.put("message", "鏂囦欢涓嶈兘涓虹┖");
-                return result;
-            }
+            String fileUel = RuoYiConfig.getProfile() + filePath.replace("/profile","").replace("profile","");
+            trueFile = new File(fileUel);
 
-            if ((file == null || file.isEmpty())){
-                deleteY = false;
-                String fileUel = RuoYiConfig.getProfile() + filePath.replace("/profile","");
-                trueFile = new File(fileUel);
-            }else {
-                trueFile = videoProcessService.convertToFile(file);
-            }
+
             String fileName = trueFile.getName();
-            if (fileName.isEmpty() && filePath == null) {
-                result.put("success", false);
-                result.put("message", "鏂囦欢鍚嶄笉鑳戒负绌�");
-                return result;
-            }
 
             System.out.println("-----------"+fileName);
 
@@ -566,10 +560,10 @@
             // 鍒ゆ柇鏂囦欢绫诲瀷
             if (isImageFile(extension)) {
                 // 澶勭悊鍥剧墖鏂囦欢
-                return videoProcessService.processImage(trueFile, width, height, quality, extension,deleteY);
+                return videoProcessService.processImage(trueFile, width, height, quality, extension);
             } else if (isVideoFile(extension)) {
                 // 澶勭悊瑙嗛鏂囦欢
-                return videoProcessService.processVideo(trueFile,width,height,quality,extension,deleteY);
+                return videoProcessService.processVideo(trueFile,width,height,quality,extension);
             } else {
                 result.put("success", false);
                 result.put("message", "涓嶆敮鎸佺殑鏂囦欢鏍煎紡锛�" + extension);
@@ -584,6 +578,7 @@
         }
     }
 
+
     /**
      * 鍒ゆ柇鏄惁鏄浘鐗囨枃浠�
      */
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java
index 26f2dfe..1b01eba 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/ElasticSearchConfig.java
@@ -36,8 +36,6 @@
                         "localhost",
                         8087,
 
-
-
                     "http"
 
                 )
diff --git a/zhang-content/src/main/java/com/ruoyi/domain/MediaCompressRequest.java b/zhang-content/src/main/java/com/ruoyi/domain/MediaCompressRequest.java
new file mode 100644
index 0000000..cb39813
--- /dev/null
+++ b/zhang-content/src/main/java/com/ruoyi/domain/MediaCompressRequest.java
@@ -0,0 +1,13 @@
+package com.ruoyi.domain;
+
+import lombok.Data;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@Data
+public class MediaCompressRequest {
+
+    String filePath;
+    int width;
+    int height;
+    float quality;
+}
diff --git a/zhang-content/src/main/java/com/ruoyi/service/impl/VideoProcessService.java b/zhang-content/src/main/java/com/ruoyi/service/impl/VideoProcessService.java
index 7dc98db..ba24fd0 100644
--- a/zhang-content/src/main/java/com/ruoyi/service/impl/VideoProcessService.java
+++ b/zhang-content/src/main/java/com/ruoyi/service/impl/VideoProcessService.java
@@ -75,7 +75,7 @@
      * 澶勭悊鍥剧墖鏂囦欢
      */
     public Map<String, Object> processImage(File file, int width, int height,
-                                            float quality, String format,boolean deleteY) throws IOException {
+                                            float quality, String format) throws IOException {
         Map<String, Object> result = new HashMap<>();
 
         // 璇诲彇鍥剧墖
@@ -108,11 +108,6 @@
         result.put("compressedHeight", height > 0 ? height : originalHeight);
         result.put("base64", dataUrl);
         result.put("message", "鍥剧墖鍘嬬缉鎴愬姛");
-        if (deleteY) {
-            file.delete();
-            result.put("originalDeleted", false);
-            result.put("message", "鍥剧墖鍘嬬缉鎴愬姛");
-        }
         return result;
     }
 
@@ -225,29 +220,57 @@
     }
 
     /**
-     * 鍘嬬缉涓篜NG鏍煎紡
+     * 鍘嬬缉涓篜NG鏍煎紡锛堝吋瀹规�т慨澶嶏級
      */
     private void compressAsPng(BufferedImage image, ByteArrayOutputStream output, int compressionLevel)
         throws IOException {
         Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("png");
         if (!writers.hasNext()) {
-            ImageIO.write(image, "png", output);
+            // 濡傛灉娌℃湁PNG缂栫爜鍣紝浣跨敤榛樿鏂瑰紡
+            boolean written = ImageIO.write(image, "png", output);
+            if (!written) {
+                throw new IOException("鏃犳硶鍐欏叆PNG鏍煎紡");
+            }
             return;
         }
 
         ImageWriter writer = writers.next();
-        ImageWriteParam param = writer.getDefaultWriteParam();
+        try {
+            ImageWriteParam param = writer.getDefaultWriteParam();
 
-        // PNG鐨勫帇缂╃骇鍒紙0-9锛�0鏈�蹇絾鍘嬬缉鐜囦綆锛�9鏈�鎱絾鍘嬬缉鐜囬珮锛�
-        if (compressionLevel >= 0) {
-            param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
-            param.setCompressionType("Deflate");
-            param.setCompressionQuality(Math.max(0.0f, Math.min(1.0f, compressionLevel / 9.0f)));
+            // PNG鐨勫帇缂╃骇鍒紙0-9锛�0鏈�蹇絾鍘嬬缉鐜囦綆锛�9鏈�鎱絾鍘嬬缉鐜囬珮锛�
+            if (compressionLevel >= 0) {
+                try {
+                    // 鍏堟鏌ユ槸鍚︽敮鎸佸帇缂╂ā寮�
+                    if (param.canWriteCompressed()) {
+                        param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+                        // 妫�鏌ユ槸鍚︽敮鎸丏eflate鍘嬬缉绫诲瀷
+                        String[] compressionTypes = param.getCompressionTypes();
+                        if (compressionTypes != null) {
+                            for (String type : compressionTypes) {
+                                if ("Deflate".equalsIgnoreCase(type)) {
+                                    param.setCompressionType("Deflate");
+                                    break;
+                                }
+                            }
+                        }
+                        param.setCompressionQuality(Math.max(0.0f, Math.min(1.0f, compressionLevel / 9.0f)));
+                    } else {
+                        // 濡傛灉涓嶆敮鎸佸帇缂╋紝浣跨敤榛樿璁剧疆
+                        log.debug("PNG缂栫爜鍣ㄤ笉鏀寔鍘嬬缉璁剧疆锛屼娇鐢ㄩ粯璁ゅ帇缂�");
+                    }
+                } catch (UnsupportedOperationException e) {
+                    // 鎹曡幏涓嶆敮鎸佺殑鎿嶄綔寮傚父锛岀户缁娇鐢ㄩ粯璁よ缃�
+                    log.warn("PNG鍘嬬缉璁剧疆涓嶈鏀寔: {}", e.getMessage());
+                }
+            }
+
+            writer.setOutput(new MemoryCacheImageOutputStream(output));
+            writer.write(null, new IIOImage(image, null, null), param);
+
+        } finally {
+            writer.dispose();
         }
-
-        writer.setOutput(new MemoryCacheImageOutputStream(output));
-        writer.write(null, new IIOImage(image, null, null), param);
-        writer.dispose();
     }
 
 
@@ -259,7 +282,7 @@
      * 澶勭悊瑙嗛鏂囦欢锛氱敓鎴怋ase64缂栫爜鐨勫皝闈� (浣跨敤JavaCV)
      */
     public Map<String, Object> processVideo(File file, int width, int height,
-                                            float quality, String format, boolean deleteY) {
+                                            float quality, String format) {
         Map<String, Object> result = new HashMap<>();
 
         try {
@@ -300,15 +323,6 @@
             log.error("瑙嗛灏侀潰鐢熸垚澶辫触", e);
             result.put("success", false);
             result.put("message", "灏侀潰鐢熸垚澶辫触: " + e.getMessage());
-        } finally {
-            // 娓呯悊涓存椂鏂囦欢
-            if (deleteY && file != null && file.exists()) {
-                try {
-                    file.delete();
-                } catch (Exception e) {
-                    log.warn("鍒犻櫎涓存椂瑙嗛鏂囦欢鏃跺嚭閿�", e);
-                }
-            }
         }
         return result;
     }

--
Gitblit v1.9.1