|
|
@@ -2,11 +2,21 @@ package cn.reghao.dfs.store.service.media;
|
|
|
|
|
|
import cn.reghao.dfs.store.db.mapper.ImageFileMapper;
|
|
|
import cn.reghao.dfs.store.db.mapper.ImageUrlMapper;
|
|
|
+import cn.reghao.dfs.store.model.dto.PathUrl;
|
|
|
+import cn.reghao.dfs.store.model.dto.UploadedFile;
|
|
|
import cn.reghao.dfs.store.model.po.ImageFile;
|
|
|
import cn.reghao.dfs.store.model.po.ImageUrl;
|
|
|
+import cn.reghao.dfs.store.model.vo.ImageFileRet;
|
|
|
+import cn.reghao.dfs.store.model.vo.UploadFileRet;
|
|
|
+import cn.reghao.dfs.store.service.FileUploadService;
|
|
|
+import cn.reghao.dfs.store.util.media.ImageOps;
|
|
|
+import cn.reghao.jutil.tool.id.IdGenerator;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.imageio.ImageIO;
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
+import java.io.*;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
@@ -18,10 +28,57 @@ import java.util.List;
|
|
|
public class ImageFileService {
|
|
|
private final ImageFileMapper imageFileMapper;
|
|
|
private final ImageUrlMapper imageUrlMapper;
|
|
|
+ private final FileUploadService fileUploadService;
|
|
|
+ private final IdGenerator idGenerator;
|
|
|
|
|
|
- public ImageFileService(ImageFileMapper imageFileMapper, ImageUrlMapper imageUrlMapper) {
|
|
|
+ public ImageFileService(ImageFileMapper imageFileMapper, ImageUrlMapper imageUrlMapper,
|
|
|
+ FileUploadService fileUploadService) {
|
|
|
this.imageFileMapper = imageFileMapper;
|
|
|
this.imageUrlMapper = imageUrlMapper;
|
|
|
+ this.fileUploadService = fileUploadService;
|
|
|
+ this.idGenerator = new IdGenerator("image-file-id");
|
|
|
+ }
|
|
|
+
|
|
|
+ public ImageFileRet process(String fileId, PathUrl pathUrl) throws Exception {
|
|
|
+ String filePath = pathUrl.getAbsolutePath();
|
|
|
+ String url = pathUrl.getUrl();
|
|
|
+
|
|
|
+ File originalFile = new File(filePath);
|
|
|
+ ImageOps.Size imgSize = ImageOps.info(originalFile);
|
|
|
+
|
|
|
+ String imageFileId = idGenerator.getUuid();
|
|
|
+ ImageFile imageFile = new ImageFile(imageFileId, imgSize.getWidth() > imgSize.getHeight());
|
|
|
+ ImageUrl imageUrl = new ImageUrl(imageFileId, fileId, imgSize.getWidth(), imgSize.getHeight());
|
|
|
+
|
|
|
+ imageFileMapper.save(imageFile);
|
|
|
+ imageUrlMapper.save(imageUrl);
|
|
|
+ return genThumbnail(imageFileId, filePath);
|
|
|
+ }
|
|
|
+
|
|
|
+ private ImageFileRet genThumbnail(String imageFileId, String filePath) throws Exception {
|
|
|
+ BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filePath));
|
|
|
+ BufferedImage bufferedImage1 = ImageOps.resize(bufferedImage, 4);
|
|
|
+
|
|
|
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
|
+ ImageIO.write(bufferedImage1, "jpg", baos);
|
|
|
+ byte[] imgBytes = baos.toByteArray();
|
|
|
+
|
|
|
+ String filename = "default.jpg";
|
|
|
+ long len = imgBytes.length;
|
|
|
+ String contentType = "image/jpeg";
|
|
|
+ InputStream in = new ByteArrayInputStream(imgBytes);
|
|
|
+ UploadedFile uploadedFile = new UploadedFile(filename, len, contentType, in);
|
|
|
+ UploadFileRet uploadFileRet = fileUploadService.put(uploadedFile);
|
|
|
+
|
|
|
+ String uploadId = uploadFileRet.getUploadId();
|
|
|
+ String fileId = uploadFileRet.getFileId();
|
|
|
+ PathUrl pathUrl = uploadFileRet.getPathUrl();
|
|
|
+ String filePath1 = pathUrl.getAbsolutePath();
|
|
|
+ ImageOps.Size imgSize = ImageOps.info(new File(filePath1));
|
|
|
+
|
|
|
+ ImageUrl imageUrl = new ImageUrl(imageFileId, fileId, imgSize.getWidth(), imgSize.getHeight());
|
|
|
+ imageUrlMapper.save(imageUrl);
|
|
|
+ return new ImageFileRet(uploadId, imageFileId, pathUrl.getUrl());
|
|
|
}
|
|
|
|
|
|
public void saveImage(ImageFile imageFile, List<ImageUrl> imageUrls) {
|