From 34233e911cc2abd56b6632bef10ed1445b683917 Mon Sep 17 00:00:00 2001
From: zqy <2522236926@qq.com>
Date: 星期日, 04 一月 2026 14:49:03 +0800
Subject: [PATCH] 修改bug

---
 zhang-content/src/main/java/com/ruoyi/service/impl/VideoProcessService.java |   52 ++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 40 insertions(+), 12 deletions(-)

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..450bc83 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
@@ -225,29 +225,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();
     }
 
 

--
Gitblit v1.9.1