From a2adf3b411e7dfbbad79c997aa40690858fd6ce3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=B0=8F=E5=B9=B3?= Date: Wed, 13 Nov 2024 16:24:36 +0800 Subject: [PATCH] =?UTF-8?q?DEBUG=EF=BC=9A=E4=BF=AE=E6=AD=A3=E6=9F=90?= =?UTF-8?q?=E4=BA=9B=E6=83=85=E5=86=B5=E4=B8=8B=EF=BC=8C=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=B5=81=E6=B2=A1=E6=9C=89=E6=AD=A3=E7=A1=AE=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/common/utils/CommonUtil.java | 23 ----------------- .../engine/impl/StorageEngineServiceImpl.java | 25 +++++++++++++++---- .../core/service/impl/StorageServiceImpl.java | 1 - 3 files changed, 20 insertions(+), 29 deletions(-) diff --git a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/common/utils/CommonUtil.java b/minio-plus-core/src/main/java/org/liuxp/minioplus/core/common/utils/CommonUtil.java index 66d82d7..a19c26e 100644 --- a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/common/utils/CommonUtil.java +++ b/minio-plus-core/src/main/java/org/liuxp/minioplus/core/common/utils/CommonUtil.java @@ -1,11 +1,6 @@ package org.liuxp.minioplus.core.common.utils; import cn.hutool.core.date.LocalDateTimeUtil; -import net.coobird.thumbnailator.Thumbnails; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; /** * 对象存储工具类 @@ -31,22 +26,4 @@ public class CommonUtil { return LocalDateTimeUtil.format(LocalDateTimeUtil.now(), "yyyy/MM"); } - /** - * 根据文件流和重设宽度进行图片压缩 - * @param inputStream 文件流 - * @param width 宽度 - * @return 压缩后的图片文件流 - * @throws IOException IO异常 - */ - public static ByteArrayOutputStream resizeImage(InputStream inputStream, int width)throws IOException { - - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - - Thumbnails.of(inputStream) - .width(width) - .outputQuality(0.9f) - .toOutputStream(outputStream); - - return outputStream; - } } diff --git a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/engine/impl/StorageEngineServiceImpl.java b/minio-plus-core/src/main/java/org/liuxp/minioplus/core/engine/impl/StorageEngineServiceImpl.java index b9cfdd4..cc4718d 100644 --- a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/engine/impl/StorageEngineServiceImpl.java +++ b/minio-plus-core/src/main/java/org/liuxp/minioplus/core/engine/impl/StorageEngineServiceImpl.java @@ -6,7 +6,9 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Pair; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.IdUtil; +import lombok.Cleanup; import lombok.extern.slf4j.Slf4j; +import net.coobird.thumbnailator.Thumbnails; import org.liuxp.minioplus.api.model.bo.CreateUploadUrlReqBO; import org.liuxp.minioplus.api.model.bo.CreateUploadUrlRespBO; import org.liuxp.minioplus.api.model.dto.FileMetadataInfoDTO; @@ -400,12 +402,24 @@ public class StorageEngineServiceImpl implements StorageEngineService { private void generatePreviewImage(FileMetadataInfoVo metadata) { try { if (Boolean.FALSE.equals(metadata.getIsPreview())) { + // 获取原图的bytes byte[] imageOriginBytes = minioS3Client.getObject(StorageBucketEnums.IMAGE.getCode(), metadata.getStoragePath() + "/" + metadata.getFileMd5()); - // 压缩缩略图 - ByteArrayOutputStream largeImage = CommonUtil.resizeImage(new ByteArrayInputStream(imageOriginBytes), properties.getThumbnail().getSize()); - byte[] largeImageBytes = largeImage.toByteArray(); - minioS3Client.putObject(StorageBucketEnums.IMAGE_PREVIEW.getCode(), CommonUtil.getObjectName(metadata.getFileMd5()), new ByteArrayInputStream(largeImageBytes), largeImageBytes.length, metadata.getFileMimeType()); + + // 定义文件流 + @Cleanup ByteArrayInputStream imageOriginInputStream = new ByteArrayInputStream(imageOriginBytes); + @Cleanup ByteArrayOutputStream previewImage = new ByteArrayOutputStream(); + + // 根据文件流和重设宽度进行图片压缩 + Thumbnails.of(imageOriginInputStream) + .width(properties.getThumbnail().getSize()) + .outputQuality(0.9f) + .toOutputStream(previewImage); + + byte[] previewImageBytes = previewImage.toByteArray(); + @Cleanup ByteArrayInputStream previewImageInputStream = new ByteArrayInputStream(previewImageBytes); + + minioS3Client.putObject(StorageBucketEnums.IMAGE_PREVIEW.getCode(), CommonUtil.getObjectName(metadata.getFileMd5()), previewImageInputStream, previewImageBytes.length, metadata.getFileMimeType()); metadata.setIsPreview(Boolean.TRUE); FileMetadataInfoUpdateDTO fileMetadataInfoUpdateDTO = BeanUtil.copyProperties(metadata, FileMetadataInfoUpdateDTO.class); metadataRepository.update(fileMetadataInfoUpdateDTO); @@ -421,7 +435,8 @@ public class StorageEngineServiceImpl implements StorageEngineService { @Override public Boolean createFile(FileMetadataInfoSaveDTO saveDTO, byte[] fileBytes) { // 写入文件 - return createFile(saveDTO, new ByteArrayInputStream(fileBytes)); + @Cleanup ByteArrayInputStream inputStream = new ByteArrayInputStream(fileBytes); + return createFile(saveDTO, inputStream); } @Override diff --git a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/service/impl/StorageServiceImpl.java b/minio-plus-core/src/main/java/org/liuxp/minioplus/core/service/impl/StorageServiceImpl.java index 56d22bf..419141b 100644 --- a/minio-plus-core/src/main/java/org/liuxp/minioplus/core/service/impl/StorageServiceImpl.java +++ b/minio-plus-core/src/main/java/org/liuxp/minioplus/core/service/impl/StorageServiceImpl.java @@ -1,6 +1,5 @@ package org.liuxp.minioplus.core.service.impl; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.lang.Pair;