| | |
| | | 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; |
| | |
| | | |
| | | /** |
| | | * 压缩图片或提取视频封面并返回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包含压缩结果和Base64 |
| | | */ |
| | | @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); |
| | | |
| | |
| | | // 判断文件类型 |
| | | 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); |