You've already forked FrameTour-BE
feat(image): 增强图片处理流程并优化水印逻辑
- 在PhotoProcessContext中新增Stage管理相关方法,支持启用、禁用及批量设置Stage状态 - 新增ImageEnhanceStage并整合到图片处理流水线中 - 重构重打印流程,复用普通照片处理流水线 - 生成订单二维码并用于水印配置 - 移除冗余的水印配置和增强配置代码 - 优化Stage控制逻辑,支持动态启用或禁用特定处理阶段
This commit is contained in:
@@ -751,10 +751,17 @@ public class PrinterServiceImpl implements PrinterService {
|
||||
* @param watermarkConfig 水印配置
|
||||
*/
|
||||
private Pipeline<PhotoProcessContext> createNormalPhotoPipeline(WatermarkConfig watermarkConfig) {
|
||||
BceEnhancerConfig config = new BceEnhancerConfig();
|
||||
config.setQps(1);
|
||||
config.setAppId("119554288");
|
||||
config.setApiKey("OX6QoijgKio3eVtA0PiUVf7f");
|
||||
config.setSecretKey("dYatXReVriPeiktTjUblhfubpcmYfuMk");
|
||||
|
||||
return new PipelineBuilder<PhotoProcessContext>("NormalPhotoPipeline")
|
||||
.addStage(new DownloadStage())
|
||||
.addStage(new ImageOrientationStage())
|
||||
.addStage(new ConditionalRotateStage())
|
||||
.addStage(new ImageEnhanceStage(config)) // 通过setStageState方法设置是否启用
|
||||
.addStage(new WatermarkStage(watermarkConfig))
|
||||
.addStage(new RestoreOrientationStage())
|
||||
.addStage(new UploadStage())
|
||||
@@ -1352,6 +1359,14 @@ public class PrinterServiceImpl implements PrinterService {
|
||||
|
||||
MemberPrintResp memberPrint = memberPrints.get(0);
|
||||
|
||||
File qrCodeFile = new File("qrCodeFile" + memberPrint.getOrderId() + ".png");
|
||||
MpConfigEntity scenicMpConfig = scenicRepository.getScenicMpConfig(memberPrint.getScenicId());
|
||||
try {
|
||||
WxMpUtil.generateWXAQRCode(scenicMpConfig.getAppId(), scenicMpConfig.getAppSecret(), scenicMpConfig.getState(), "pages/my/orderDetailNew?force=1&id="+memberPrint.getOrderId(), qrCodeFile.getAbsolutePath());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
// 3. 重新处理照片(带增强选项)
|
||||
Boolean needEnhance = request.getNeedEnhance();
|
||||
if (needEnhance == null) {
|
||||
@@ -1361,6 +1376,7 @@ public class PrinterServiceImpl implements PrinterService {
|
||||
// 3.1 创建图片处理上下文
|
||||
PrinterOrderItem orderItem = PrinterOrderItem.fromMemberPrintResp(memberPrint);
|
||||
PhotoProcessContext context = PhotoProcessContext.fromPrinterOrderItem(orderItem, memberPrint.getScenicId());
|
||||
context.setStageState("image_enhance", needEnhance); // 通过setStageState方法设置是否启用
|
||||
|
||||
// 3.2 设置景区配置和场景
|
||||
ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(memberPrint.getScenicId());
|
||||
@@ -1382,26 +1398,12 @@ public class PrinterServiceImpl implements PrinterService {
|
||||
|
||||
try {
|
||||
if (context.getImageType() == ImageType.NORMAL_PHOTO) {
|
||||
// 准备水印配置(重打印不需要二维码,传 null)
|
||||
WatermarkConfig watermarkConfig = prepareWatermarkConfig(context, null);
|
||||
// 准备水印配置(重打印需要二维码)
|
||||
WatermarkConfig watermarkConfig = prepareWatermarkConfig(context, qrCodeFile);
|
||||
prepareStorageAdapter(context);
|
||||
|
||||
BceEnhancerConfig config = new BceEnhancerConfig();
|
||||
config.setQps(1);
|
||||
config.setAppId("119554288");
|
||||
config.setApiKey("OX6QoijgKio3eVtA0PiUVf7f");
|
||||
config.setSecretKey("dYatXReVriPeiktTjUblhfubpcmYfuMk");
|
||||
// 创建管线,条件性添加增强 Stage
|
||||
pipeline = new PipelineBuilder<PhotoProcessContext>("ReprintPipeline")
|
||||
.addStage(new DownloadStage())
|
||||
.addStage(new ImageOrientationStage())
|
||||
.addStage(new ConditionalRotateStage())
|
||||
.addStageIf(needEnhance, new ImageEnhanceStage(config))
|
||||
.addStage(new WatermarkStage(watermarkConfig))
|
||||
.addStage(new RestoreOrientationStage())
|
||||
.addStage(new UploadStage())
|
||||
.addStage(new CleanupStage())
|
||||
.build();
|
||||
pipeline = createNormalPhotoPipeline(watermarkConfig);
|
||||
} else {
|
||||
// 拼图
|
||||
prepareStorageAdapter(context);
|
||||
|
||||
Reference in New Issue
Block a user