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);
+
     /**
      * 上传图片
      *