From f8a814ace43e39164fc35da7583235d1024b8103 Mon Sep 17 00:00:00 2001 From: MagakiReimu <448143736@qq.com> Date: Thu, 16 Apr 2020 22:00:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=80=E4=B8=AA=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E5=B7=B2=E4=B8=8A=E4=BC=A0=E7=9A=84=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=AF=B9=E5=BA=94=E7=BC=A9=E7=95=A5=E5=9B=BE?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=B9=B6=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BA=86=E5=85=B3=E8=81=94=E6=8E=A5=E5=8F=A3=E7=9A=84=E5=85=A5?= =?UTF-8?q?=E5=8F=82=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/DefaultFastFileStorageClient.java | 31 ++++++++++++++----- .../service/FastFileStorageClient.java | 9 ++++++ 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/github/tobato/fastdfs/service/DefaultFastFileStorageClient.java b/src/main/java/com/github/tobato/fastdfs/service/DefaultFastFileStorageClient.java index 78168dc..5b31b3c 100644 --- a/src/main/java/com/github/tobato/fastdfs/service/DefaultFastFileStorageClient.java +++ b/src/main/java/com/github/tobato/fastdfs/service/DefaultFastFileStorageClient.java @@ -5,6 +5,7 @@ import com.github.tobato.fastdfs.domain.fdfs.StorageNode; import com.github.tobato.fastdfs.domain.fdfs.StorePath; import com.github.tobato.fastdfs.domain.fdfs.ThumbImageConfig; +import com.github.tobato.fastdfs.domain.proto.storage.DownloadCallback; import com.github.tobato.fastdfs.domain.proto.storage.StorageSetMetadataCommand; import com.github.tobato.fastdfs.domain.proto.storage.StorageUploadFileCommand; import com.github.tobato.fastdfs.domain.proto.storage.StorageUploadSlaveFileCommand; @@ -92,6 +93,19 @@ public StorePath uploadImageAndCrtThumbImage(InputStream inputStream, return uploadImage(fastImageFile); } + @Override + public StorePath createThumbImage(final StorePath storePath, final ThumbImage thumbImage) { + final StorageNode client = getStorageNode(storePath.getGroup()); + final String fileExtName = storePath.getPath().substring(storePath.getPath().lastIndexOf(".") + 1); + return downloadFile(storePath.getGroup(), storePath.getPath(), + new DownloadCallback() { + @Override + public StorePath recv(InputStream inputStream) throws IOException { + return uploadThumbImage(client, inputStream, storePath.getPath(), thumbImage, fileExtName); + } + }); + } + /** * 上传文件 *
@@ -149,7 +163,8 @@ public StorePath uploadImage(FastImageFile fastImageFile) {
         //如果设置了需要上传缩略图
         if (null != fastImageFile.getThumbImage()) {
             // 上传缩略图
-            uploadThumbImage(client, new ByteArrayInputStream(bytes), path.getPath(), fastImageFile);
+            uploadThumbImage(client, new ByteArrayInputStream(bytes), path.getPath(),
+                fastImageFile.getThumbImage(), fileExtName);
         }
         bytes = null;
         return path;
@@ -236,12 +251,13 @@ private StorePath uploadFileAndMetaData(StorageNode client, InputStream inputStr
      * @param client
      * @param inputStream
      * @param masterFilename
-     * @param fastImageFile
+     * @param thumbImage
      */
-    private void uploadThumbImage(StorageNode client, InputStream inputStream,
-                                  String masterFilename, FastImageFile fastImageFile) {
+    private StorePath uploadThumbImage(StorageNode client, InputStream inputStream,
+                                  String masterFilename, ThumbImage thumbImage,
+                                       String fileExtName) {
         ByteArrayInputStream thumbImageStream = null;
-        ThumbImage thumbImage = fastImageFile.getThumbImage();
+        StorePath storePath = null;
         try {
             //生成缩略图片
             thumbImageStream = generateThumbImageStream(inputStream, thumbImage);
@@ -253,8 +269,8 @@ private void uploadThumbImage(StorageNode client, InputStream inputStream,
 		        LOGGER.debug("获取到缩略图前缀{}", prefixName);
 	        }
             StorageUploadSlaveFileCommand command = new StorageUploadSlaveFileCommand(thumbImageStream, fileSize,
-                    masterFilename, prefixName, fastImageFile.getFileExtName());
-            fdfsConnectionManager.executeFdfsCmd(client.getInetSocketAddress(), command);
+                    masterFilename, prefixName, fileExtName);
+            storePath = fdfsConnectionManager.executeFdfsCmd(client.getInetSocketAddress(), command);
 
         } catch (IOException e) {
             LOGGER.error("upload ThumbImage error", e);
@@ -262,6 +278,7 @@ private void uploadThumbImage(StorageNode client, InputStream inputStream,
         } finally {
             IOUtils.closeQuietly(thumbImageStream);
         }
+        return storePath;
     }
 
     /**
diff --git a/src/main/java/com/github/tobato/fastdfs/service/FastFileStorageClient.java b/src/main/java/com/github/tobato/fastdfs/service/FastFileStorageClient.java
index 97a471b..193ee51 100644
--- a/src/main/java/com/github/tobato/fastdfs/service/FastFileStorageClient.java
+++ b/src/main/java/com/github/tobato/fastdfs/service/FastFileStorageClient.java
@@ -4,6 +4,7 @@
 import com.github.tobato.fastdfs.domain.fdfs.StorePath;
 import com.github.tobato.fastdfs.domain.upload.FastFile;
 import com.github.tobato.fastdfs.domain.upload.FastImageFile;
+import com.github.tobato.fastdfs.domain.upload.ThumbImage;
 
 import java.io.InputStream;
 import java.util.Set;
@@ -49,6 +50,14 @@ public interface FastFileStorageClient extends GenerateStorageClient {
     StorePath uploadImageAndCrtThumbImage(InputStream inputStream, long fileSize, String fileExtName,
                                           Set metaDataSet);
 
+    /**
+     * 根据已有源图生成缩略图
+     * @param storePath 源图片储存地址
+     * @param thumbImage 缩略图配置
+     * @return 缩略图储存地址
+     */
+    StorePath createThumbImage(StorePath storePath, ThumbImage thumbImage);
+
     /**
      * 上传图片
      *