diff --git a/pom.xml b/pom.xml
index 24f1ac1..98e740b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -59,6 +59,11 @@
poi-tl
1.12.2
+
+ net.coobird
+ thumbnailator
+ 0.4.20
+
com.jjb.saas
jjb-saas-system-client
diff --git a/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesQueryExe.java b/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesQueryExe.java
index 377bd22..f970615 100644
--- a/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesQueryExe.java
+++ b/web-app/src/main/java/com/zcloud/edu/command/query/archives/ArchivesQueryExe.java
@@ -23,6 +23,7 @@ import com.zcloud.edu.domain.model.archives.ClassArchivesE;
import com.zcloud.edu.domain.model.archives.PersonArchivesE;
import com.zcloud.edu.domain.model.study.*;
import com.zcloud.edu.domain.utils.FixedPictureUtils;
+import com.zcloud.edu.domain.utils.ImageUtil;
import com.zcloud.edu.dto.archives.ArchivesPdfFilePageQry;
import com.zcloud.edu.dto.archives.ArchivesQry;
import com.zcloud.edu.dto.clientobject.archives.ArchivesPdfFileCO;
@@ -912,19 +913,22 @@ public class ArchivesQueryExe {
Map itemMap = PropertyUtils.describe(item);
if(!ObjectUtils.isEmpty(item.getSignFaceUrl())){
// PictureRenderData signPicture = Pictures.ofUrl(fileUrlConfig.getPrefixUrl() + item.getSignFaceUrl(), PictureType.JPEG).size(50, 50).create();//网络图片地址
- PictureRenderData signPicture = FixedPictureUtils.ofNormalUrl(fileUrlConfig.getPrefixUrl() + item.getSignFaceUrl(), 50, 50);
+// PictureRenderData signPicture = FixedPictureUtils.ofNormalUrl(fileUrlConfig.getPrefixUrl() + item.getSignFaceUrl(), 50, 50);
+ PictureRenderData signPicture = ImageUtil.createWithThumbnailator(fileUrlConfig.getPrefixUrl() + item.getSignFaceUrl(), 50, 50);
itemMap.put("signPicture", signPicture);
}
if(!ObjectUtils.isEmpty(item.getExamFaceUrl())){
// PictureRenderData examPicture = Pictures.ofUrl(fileUrlConfig.getPrefixUrl() + item.getExamFaceUrl(), PictureType.JPEG).size(50, 50).create();//网络图片地址
- PictureRenderData examPicture = FixedPictureUtils.ofNormalUrl(fileUrlConfig.getPrefixUrl() + item.getExamFaceUrl(), 50, 50);
+// PictureRenderData examPicture = FixedPictureUtils.ofNormalUrl(fileUrlConfig.getPrefixUrl() + item.getExamFaceUrl(), 50, 50);
+ PictureRenderData examPicture = ImageUtil.createWithThumbnailator(fileUrlConfig.getPrefixUrl() + item.getExamFaceUrl(), 50, 50);
itemMap.put("examPicture", examPicture);
}
if(!ObjectUtils.isEmpty(item.getUserAvatarUrl())){
// PictureRenderData facePicture = Pictures.ofUrl(fileUrlConfig.getPrefixUrl() + item.getUserAvatarUrl(), PictureType.JPEG).size(50, 50).style("rotation:90;").create();//网络图片地址
- PictureRenderData facePicture = FixedPictureUtils.ofNormalUrl(fileUrlConfig.getPrefixUrl() + item.getUserAvatarUrl(), 50, 50);
+// PictureRenderData facePicture = FixedPictureUtils.ofNormalUrl(fileUrlConfig.getPrefixUrl() + item.getUserAvatarUrl(), 50, 50);
+ PictureRenderData facePicture = ImageUtil.createWithThumbnailator(fileUrlConfig.getPrefixUrl() + item.getUserAvatarUrl(), 50, 50);
itemMap.put("facePicture", facePicture);
}
diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/utils/ImageUtil.java b/web-domain/src/main/java/com/zcloud/edu/domain/utils/ImageUtil.java
new file mode 100644
index 0000000..25b96d7
--- /dev/null
+++ b/web-domain/src/main/java/com/zcloud/edu/domain/utils/ImageUtil.java
@@ -0,0 +1,43 @@
+package com.zcloud.edu.domain.utils;
+
+import com.deepoove.poi.data.PictureRenderData;
+import com.deepoove.poi.data.PictureType;
+import com.deepoove.poi.data.Pictures;
+import net.coobird.thumbnailator.Thumbnails;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.net.URL;
+import net.coobird.thumbnailator.Thumbnails;
+import net.coobird.thumbnailator.geometry.Positions;
+public class ImageUtil {
+ public static PictureRenderData createWithThumbnailator(String imageUrl, int width, int height) {
+ try {
+ // 下载原图
+ URL url = new URL(imageUrl);
+ BufferedImage original = ImageIO.read(url);
+
+ // 使用Thumbnailator处理 - 一行代码搞定旋转和缩放
+ BufferedImage processed = Thumbnails.of(original)
+ .size(width, height)
+ .rotate(180) // 如果需要固定旋转,可以直接指定
+ .asBufferedImage();
+
+ // 或者使用EXIF自动旋转(如果Thumbnailator版本支持)
+ // Thumbnails.of(original).scale(1.0).useExifOrientation().asBufferedImage();
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ImageIO.write(processed, "jpg", baos);
+
+ return Pictures.ofBytes(baos.toByteArray(), PictureType.JPEG)
+ .size(width, height)
+ .create();
+
+ } catch (Exception e) {
+ return Pictures.ofUrl(imageUrl, PictureType.JPEG)
+ .size(width, height)
+ .create();
+ }
+ }
+}