文件补传
This commit is contained in:
@@ -0,0 +1,264 @@
|
||||
package com.aida.lanecarford.common.constant;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* MinIO文件命名常量类
|
||||
* 统一管理不同类型图片的命名规范
|
||||
*
|
||||
* @author AI Assistant
|
||||
* @since 2024-01-01
|
||||
*/
|
||||
public class MinioFileConstants {
|
||||
|
||||
/**
|
||||
* 文件路径分隔符
|
||||
*/
|
||||
public static final String PATH_SEPARATOR = "/";
|
||||
|
||||
/**
|
||||
* 图片文件扩展名
|
||||
*/
|
||||
public static final String PNG_EXTENSION = ".png";
|
||||
public static final String JPG_EXTENSION = ".jpg";
|
||||
public static final String JPEG_EXTENSION = ".jpeg";
|
||||
|
||||
/**
|
||||
* 顾客照片目录
|
||||
*/
|
||||
public static final String CUSTOMER_PHOTO_DIR = "customer_photo";
|
||||
|
||||
/**
|
||||
* 模特照片目录
|
||||
*/
|
||||
public static final String MODEL_PHOTO_DIR = "model_photo";
|
||||
|
||||
/**
|
||||
* 风格图片目录
|
||||
*/
|
||||
public static final String STYLE_IMAGE_DIR = "style_image";
|
||||
|
||||
/**
|
||||
* 试穿结果图片目录
|
||||
*/
|
||||
public static final String TRY_ON_RESULT_DIR = "try_on_result";
|
||||
|
||||
/**
|
||||
* 合成图片目录
|
||||
*/
|
||||
public static final String COMPOSED_IMAGE_DIR = "composed_image";
|
||||
|
||||
/**
|
||||
* 生成顾客照片文件名
|
||||
* 格式: 桶名/customer_photo/UUID.png
|
||||
*
|
||||
* @param bucketName 桶名
|
||||
* @return 完整的文件路径
|
||||
*/
|
||||
public static String generateCustomerPhotoPath(String bucketName) {
|
||||
return bucketName + PATH_SEPARATOR + CUSTOMER_PHOTO_DIR + PATH_SEPARATOR + UUID.randomUUID() + PNG_EXTENSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成顾客照片文件名(仅路径部分)
|
||||
* 格式: customer_photo/UUID.png
|
||||
*
|
||||
* @return 文件路径(不含桶名)
|
||||
*/
|
||||
public static String generateCustomerPhotoObjectName() {
|
||||
return CUSTOMER_PHOTO_DIR + PATH_SEPARATOR + UUID.randomUUID() + PNG_EXTENSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成模特照片文件名
|
||||
* 格式: 桶名/model_photo/UUID.png
|
||||
*
|
||||
* @param bucketName 桶名
|
||||
* @return 完整的文件路径
|
||||
*/
|
||||
public static String generateModelPhotoPath(String bucketName) {
|
||||
return bucketName + PATH_SEPARATOR + MODEL_PHOTO_DIR + PATH_SEPARATOR + UUID.randomUUID() + PNG_EXTENSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成模特照片文件名(仅路径部分)
|
||||
* 格式: model_photo/UUID.png
|
||||
*
|
||||
* @return 文件路径(不含桶名)
|
||||
*/
|
||||
public static String generateModelPhotoObjectName() {
|
||||
return MODEL_PHOTO_DIR + PATH_SEPARATOR + UUID.randomUUID() + PNG_EXTENSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成风格图片文件名
|
||||
* 格式: 桶名/style_image/UUID.png
|
||||
*
|
||||
* @param bucketName 桶名
|
||||
* @return 完整的文件路径
|
||||
*/
|
||||
public static String generateStyleImagePath(String bucketName) {
|
||||
return bucketName + PATH_SEPARATOR + STYLE_IMAGE_DIR + PATH_SEPARATOR + UUID.randomUUID() + PNG_EXTENSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成风格图片文件名(仅路径部分)
|
||||
* 格式: style_image/UUID.png
|
||||
*
|
||||
* @return 文件路径(不含桶名)
|
||||
*/
|
||||
public static String generateStyleImageObjectName() {
|
||||
return STYLE_IMAGE_DIR + PATH_SEPARATOR + UUID.randomUUID() + PNG_EXTENSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成试穿结果图片文件名
|
||||
* 格式: 桶名/try_on_result/UUID.png
|
||||
*
|
||||
* @param bucketName 桶名
|
||||
* @return 完整的文件路径
|
||||
*/
|
||||
public static String generateTryOnResultPath(String bucketName) {
|
||||
return bucketName + PATH_SEPARATOR + TRY_ON_RESULT_DIR + PATH_SEPARATOR + UUID.randomUUID() + PNG_EXTENSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成试穿结果图片文件名(仅路径部分)
|
||||
* 格式: try_on_result/UUID.png
|
||||
*
|
||||
* @return 文件路径(不含桶名)
|
||||
*/
|
||||
public static String generateTryOnResultObjectName() {
|
||||
return TRY_ON_RESULT_DIR + PATH_SEPARATOR + UUID.randomUUID() + PNG_EXTENSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成合成图片文件名
|
||||
* 格式: 桶名/composed_image/UUID.jpg
|
||||
*
|
||||
* @param bucketName 桶名
|
||||
* @return 完整的文件路径
|
||||
*/
|
||||
public static String generateComposedImagePath(String bucketName) {
|
||||
return bucketName + PATH_SEPARATOR + COMPOSED_IMAGE_DIR + PATH_SEPARATOR + UUID.randomUUID() + JPG_EXTENSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成合成图片文件名(仅路径部分)
|
||||
* 格式: composed_image/UUID.jpg
|
||||
*
|
||||
* @return 文件路径(不含桶名)
|
||||
*/
|
||||
public static String generateComposedImageObjectName() {
|
||||
return COMPOSED_IMAGE_DIR + PATH_SEPARATOR + UUID.randomUUID() + JPG_EXTENSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成带前缀的试穿结果图片文件名
|
||||
* 格式: 桶名/try_on_result/tryon_result_UUID.png
|
||||
*
|
||||
* @param bucketName 桶名
|
||||
* @return 完整的文件路径
|
||||
*/
|
||||
public static String generateTryOnResultWithPrefixPath(String bucketName) {
|
||||
return bucketName + PATH_SEPARATOR + TRY_ON_RESULT_DIR + PATH_SEPARATOR + "tryon_result_" + UUID.randomUUID() + PNG_EXTENSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成带前缀的试穿结果图片文件名(仅路径部分)
|
||||
* 格式: try_on_result/tryon_result_UUID.png
|
||||
*
|
||||
* @return 文件路径(不含桶名)
|
||||
*/
|
||||
public static String generateTryOnResultWithPrefixObjectName() {
|
||||
return TRY_ON_RESULT_DIR + PATH_SEPARATOR + "tryon_result_" + UUID.randomUUID() + PNG_EXTENSION;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成带时间戳的合成图片文件名
|
||||
* 格式: 桶名/composed_image/composed_[图片数量]_images_composed_[时间戳].jpg
|
||||
*
|
||||
* @param bucketName 桶名
|
||||
* @param imageCount 图片数量
|
||||
* @return 完整的文件路径
|
||||
*/
|
||||
public static String generateComposedImageWithTimestampPath(String bucketName, int imageCount) {
|
||||
String timestamp = String.valueOf(System.currentTimeMillis());
|
||||
String suffix = imageCount + "_images_composed";
|
||||
String fileName = "composed_" + suffix + "_" + timestamp + JPG_EXTENSION;
|
||||
return bucketName + PATH_SEPARATOR + COMPOSED_IMAGE_DIR + PATH_SEPARATOR + fileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成带时间戳的合成图片文件名(仅路径部分)
|
||||
* 格式: composed_image/composed_[图片数量]_images_composed_[时间戳].jpg
|
||||
*
|
||||
* @param imageCount 图片数量
|
||||
* @return 文件路径(不含桶名)
|
||||
*/
|
||||
public static String generateComposedImageWithTimestampObjectName(int imageCount) {
|
||||
String timestamp = String.valueOf(System.currentTimeMillis());
|
||||
String suffix = imageCount + "_images_composed";
|
||||
String fileName = "composed_" + suffix + "_" + timestamp + JPG_EXTENSION;
|
||||
return COMPOSED_IMAGE_DIR + PATH_SEPARATOR + fileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据文件类型生成对应的对象名称
|
||||
*
|
||||
* @param fileType 文件类型
|
||||
* @return 对象名称
|
||||
*/
|
||||
public static String generateObjectNameByType(FileType fileType) {
|
||||
return switch (fileType) {
|
||||
case CUSTOMER_PHOTO -> generateCustomerPhotoObjectName();
|
||||
case MODEL_PHOTO -> generateModelPhotoObjectName();
|
||||
case STYLE_IMAGE -> generateStyleImageObjectName();
|
||||
case TRY_ON_RESULT -> generateTryOnResultObjectName();
|
||||
case COMPOSED_IMAGE -> generateComposedImageObjectName();
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据文件类型生成对应的完整路径
|
||||
*
|
||||
* @param bucketName 桶名
|
||||
* @param fileType 文件类型
|
||||
* @return 完整路径
|
||||
*/
|
||||
public static String generatePathByType(String bucketName, FileType fileType) {
|
||||
return switch (fileType) {
|
||||
case CUSTOMER_PHOTO -> generateCustomerPhotoPath(bucketName);
|
||||
case MODEL_PHOTO -> generateModelPhotoPath(bucketName);
|
||||
case STYLE_IMAGE -> generateStyleImagePath(bucketName);
|
||||
case TRY_ON_RESULT -> generateTryOnResultPath(bucketName);
|
||||
case COMPOSED_IMAGE -> generateComposedImagePath(bucketName);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件类型枚举
|
||||
*/
|
||||
public enum FileType {
|
||||
/**
|
||||
* 顾客照片
|
||||
*/
|
||||
CUSTOMER_PHOTO,
|
||||
/**
|
||||
* 模特照片
|
||||
*/
|
||||
MODEL_PHOTO,
|
||||
/**
|
||||
* 风格图片
|
||||
*/
|
||||
STYLE_IMAGE,
|
||||
/**
|
||||
* 试穿结果图片
|
||||
*/
|
||||
TRY_ON_RESULT,
|
||||
/**
|
||||
* 合成图片
|
||||
*/
|
||||
COMPOSED_IMAGE
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.aida.lanecarford.service.impl;
|
||||
|
||||
import com.aida.lanecarford.constant.MinioFileConstants;
|
||||
import com.aida.lanecarford.common.constant.MinioFileConstants;
|
||||
import com.aida.lanecarford.dto.CustomerPhotoDto;
|
||||
import com.aida.lanecarford.entity.CustomerPhoto;
|
||||
import com.aida.lanecarford.mapper.CustomerPhotoMapper;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.aida.lanecarford.service.impl;
|
||||
|
||||
import com.aida.lanecarford.config.MinioConfig;
|
||||
import com.aida.lanecarford.constant.MinioFileConstants;
|
||||
import com.aida.lanecarford.common.constant.MinioFileConstants;
|
||||
import com.aida.lanecarford.service.ImageCompositionService;
|
||||
import com.aida.lanecarford.util.ImageCompositionUtil;
|
||||
import com.aida.lanecarford.util.MinioUtil;
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.aida.lanecarford.service.impl;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.aida.lanecarford.common.CommonConstant;
|
||||
import com.aida.lanecarford.common.response.ResultEnum;
|
||||
import com.aida.lanecarford.constant.MinioFileConstants;
|
||||
import com.aida.lanecarford.common.constant.MinioFileConstants;
|
||||
import com.aida.lanecarford.entity.CustomerPhoto;
|
||||
import com.aida.lanecarford.entity.ModelPhoto;
|
||||
import com.aida.lanecarford.entity.Style;
|
||||
@@ -33,7 +33,6 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.aida.lanecarford.util;
|
||||
|
||||
import com.aida.lanecarford.constant.MinioFileConstants;
|
||||
import com.aida.lanecarford.common.constant.MinioFileConstants;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
package com.aida.lanecarford.util;
|
||||
|
||||
import com.aida.lanecarford.config.MinioConfig;
|
||||
import com.aida.lanecarford.constant.MinioFileConstants;
|
||||
import com.aida.lanecarford.common.constant.MinioFileConstants;
|
||||
import com.aida.lanecarford.exception.MinioException;
|
||||
import io.minio.*;
|
||||
import io.minio.errors.*;
|
||||
import io.minio.http.Method;
|
||||
import io.minio.messages.Bucket;
|
||||
import io.minio.messages.Item;
|
||||
@@ -20,8 +19,6 @@ import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
|
||||
Reference in New Issue
Block a user