diff --git a/chestnut-cms/chestnut-cms-contentcore/src/main/java/com/chestnut/contentcore/core/impl/ResourceType_Image.java b/chestnut-cms/chestnut-cms-contentcore/src/main/java/com/chestnut/contentcore/core/impl/ResourceType_Image.java index 9f6936c7..01e6c989 100644 --- a/chestnut-cms/chestnut-cms-contentcore/src/main/java/com/chestnut/contentcore/core/impl/ResourceType_Image.java +++ b/chestnut-cms/chestnut-cms-contentcore/src/main/java/com/chestnut/contentcore/core/impl/ResourceType_Image.java @@ -87,7 +87,11 @@ public class ResourceType_Image implements IResourceType { @Override public List process(CmsResource resource, File file) throws IOException { - CmsSite site = siteService.getSite(resource.getSiteId()); + String extension = FilenameUtils.getExtension(file.getName()); + if ("svg".equalsIgnoreCase(extension)) { + return List.of(); // 不处理svg图片 + } + CmsSite site = siteService.getSite(resource.getSiteId()); boolean needWatermark = needWatermark(site); boolean needThumbnail = needThumbnail(site); if (!needWatermark && !needThumbnail) { @@ -112,63 +116,6 @@ public class ResourceType_Image implements IResourceType { return files; } -// @Override -// public void asyncProcess(CmsResource resource) { -// CmsSite site = siteService.getSite(resource.getSiteId()); -// boolean needWatermark = needWatermark(site); -// boolean needThumbnail = needThumbnail(site); -// if (!needWatermark && !needThumbnail) { -// return; // 不需要处理 -// } -// asyncTaskManager.execute(() -> { -// String fileStorageType = FileStorageTypeProperty.getValue(site.getConfigProps()); -// IFileStorageType fst = fileStorageTypeMap.get(IFileStorageType.BEAN_NAME_PREIFX + fileStorageType); -// FileStorageHelper fileStorageHelper = FileStorageHelper.of(fst, site); -// String tempDirectory = ResourceUtils.getResourceTempDirectory(site); -// File tempFile = new File(tempDirectory + resource.getPath()); -// FileExUtils.mkdirs(tempFile.getParent()); -// Map paths = new HashMap<>(); -// try (InputStream read = fileStorageHelper.read(resource.getPath())) { -// FileExUtils.transfer(read, tempFile); -// // 获取图片属性 -// BufferedImage bi = ImageIO.read(tempFile); -// resource.setWidth(bi.getWidth()); -// resource.setHeight(bi.getHeight()); -// // 先处理图片水印 -// if (needWatermark) { -// watermark(site, bi, tempFile); -// paths.put(resource.getPath(), tempFile); -// resource.setFileSize(tempFile.length()); -// } -// // 默认缩略图处理 -// thumbnail(site, resource, tempFile); -// // 更新文件 -// for (Map.Entry entry : paths.entrySet()) { -// try (FileInputStream is = new FileInputStream(entry.getValue())) { -// fileStorageHelper.write(entry.getKey(), is, entry.getValue().length()); -// } catch (IOException e) { -// log.error("Write temp file to storage {} failed.", fst.getType(), e); -// } -// } -// if (needWatermark) { -// resourceService.updateById(resource); -// } -// } catch (IOException e) { -// log.error("Image resource process fail.", e); -// } finally { -// try { -// // 删除临时文件 -// Files.deleteIfExists(tempFile.toPath()); -// for (File file : paths.values()) { -// Files.deleteIfExists(file.toPath()); -// } -// } catch (IOException e) { -// log.error("Delete temp file failed.", e); -// } -// } -// }); -// } - private boolean needWatermark(CmsSite site) { if (!ImageWatermarkProperty.getValue(site.getConfigProps())) { return false; diff --git a/chestnut-cms/chestnut-cms-contentcore/src/main/java/com/chestnut/contentcore/service/IResourceService.java b/chestnut-cms/chestnut-cms-contentcore/src/main/java/com/chestnut/contentcore/service/IResourceService.java index c13e26cf..684675ec 100644 --- a/chestnut-cms/chestnut-cms-contentcore/src/main/java/com/chestnut/contentcore/service/IResourceService.java +++ b/chestnut-cms/chestnut-cms-contentcore/src/main/java/com/chestnut/contentcore/service/IResourceService.java @@ -106,7 +106,7 @@ public interface IResourceService extends IService { * @param width 缩略图宽度 * @param height 缩略图高度 */ - void createThumbnailIfNotExists(InternalURL internalURL, int width, int height) throws Exception; + boolean createThumbnailIfNotExists(InternalURL internalURL, int width, int height) throws Exception; /** * 处理默认缩略图 diff --git a/chestnut-cms/chestnut-cms-contentcore/src/main/java/com/chestnut/contentcore/service/impl/ResourceServiceImpl.java b/chestnut-cms/chestnut-cms-contentcore/src/main/java/com/chestnut/contentcore/service/impl/ResourceServiceImpl.java index 660032d7..9d907e40 100644 --- a/chestnut-cms/chestnut-cms-contentcore/src/main/java/com/chestnut/contentcore/service/impl/ResourceServiceImpl.java +++ b/chestnut-cms/chestnut-cms-contentcore/src/main/java/com/chestnut/contentcore/service/impl/ResourceServiceImpl.java @@ -45,6 +45,7 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.MapUtils; import org.apache.commons.io.FileUtils; +import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; import org.springframework.stereotype.Service; @@ -374,33 +375,40 @@ public class ResourceServiceImpl extends ServiceImpl