修复导出一人一档人脸

dev
zhaokai 2026-03-11 10:13:28 +08:00
parent e324518713
commit 426f2ac18f
3 changed files with 55 additions and 3 deletions

View File

@ -59,6 +59,11 @@
<artifactId>poi-tl</artifactId> <artifactId>poi-tl</artifactId>
<version>1.12.2</version> <version>1.12.2</version>
</dependency> </dependency>
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.20</version>
</dependency>
<dependency> <dependency>
<groupId>com.jjb.saas</groupId> <groupId>com.jjb.saas</groupId>
<artifactId>jjb-saas-system-client</artifactId> <artifactId>jjb-saas-system-client</artifactId>

View File

@ -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.archives.PersonArchivesE;
import com.zcloud.edu.domain.model.study.*; import com.zcloud.edu.domain.model.study.*;
import com.zcloud.edu.domain.utils.FixedPictureUtils; 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.ArchivesPdfFilePageQry;
import com.zcloud.edu.dto.archives.ArchivesQry; import com.zcloud.edu.dto.archives.ArchivesQry;
import com.zcloud.edu.dto.clientobject.archives.ArchivesPdfFileCO; import com.zcloud.edu.dto.clientobject.archives.ArchivesPdfFileCO;
@ -912,19 +913,22 @@ public class ArchivesQueryExe {
Map<String, Object> itemMap = PropertyUtils.describe(item); Map<String, Object> itemMap = PropertyUtils.describe(item);
if(!ObjectUtils.isEmpty(item.getSignFaceUrl())){ if(!ObjectUtils.isEmpty(item.getSignFaceUrl())){
// PictureRenderData signPicture = Pictures.ofUrl(fileUrlConfig.getPrefixUrl() + item.getSignFaceUrl(), PictureType.JPEG).size(50, 50).create();//网络图片地址 // 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); itemMap.put("signPicture", signPicture);
} }
if(!ObjectUtils.isEmpty(item.getExamFaceUrl())){ if(!ObjectUtils.isEmpty(item.getExamFaceUrl())){
// PictureRenderData examPicture = Pictures.ofUrl(fileUrlConfig.getPrefixUrl() + item.getExamFaceUrl(), PictureType.JPEG).size(50, 50).create();//网络图片地址 // 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); itemMap.put("examPicture", examPicture);
} }
if(!ObjectUtils.isEmpty(item.getUserAvatarUrl())){ if(!ObjectUtils.isEmpty(item.getUserAvatarUrl())){
// PictureRenderData facePicture = Pictures.ofUrl(fileUrlConfig.getPrefixUrl() + item.getUserAvatarUrl(), PictureType.JPEG).size(50, 50).style("rotation:90;").create();//网络图片地址 // 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); itemMap.put("facePicture", facePicture);
} }

View File

@ -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();
}
}
}