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