|
@@ -1,26 +1,27 @@
|
|
|
-package com.zhixinghe1.ots.service.manager;
|
|
|
|
|
|
|
+package com.zhixinghe1.ots.service.manager.impl;
|
|
|
|
|
|
|
|
|
|
+import com.zhixinghe1.ots.domain.dto.WaterMarkLayout;
|
|
|
|
|
+import com.zhixinghe1.ots.domain.dto.WaterMarkRequest;
|
|
|
|
|
+import com.zhixinghe1.ots.domain.dto.WaterMarkStyle;
|
|
|
import com.zhixinghe1.ots.service.constant.PositionEnum;
|
|
import com.zhixinghe1.ots.service.constant.PositionEnum;
|
|
|
import com.zhixinghe1.ots.service.core.TileImageFilter;
|
|
import com.zhixinghe1.ots.service.core.TileImageFilter;
|
|
|
-import com.zhixinghe1.ots.dto.WaterMarkLayout;
|
|
|
|
|
-import com.zhixinghe1.ots.dto.WaterMarkRequest;
|
|
|
|
|
-import com.zhixinghe1.ots.dto.WaterMarkStyle;
|
|
|
|
|
|
|
+import com.zhixinghe1.ots.service.manager.IWaterMarkManager;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
-import java.io.IOException;
|
|
|
|
|
-import java.io.OutputStream;
|
|
|
|
|
-import java.io.UnsupportedEncodingException;
|
|
|
|
|
-import java.net.URLEncoder;
|
|
|
|
|
-import java.util.Optional;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import net.coobird.thumbnailator.Thumbnails;
|
|
import net.coobird.thumbnailator.Thumbnails;
|
|
|
import net.coobird.thumbnailator.filters.Caption;
|
|
import net.coobird.thumbnailator.filters.Caption;
|
|
|
import net.coobird.thumbnailator.filters.ImageFilter;
|
|
import net.coobird.thumbnailator.filters.ImageFilter;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
-
|
|
|
|
|
-import java.awt.*;
|
|
|
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
|
|
|
|
|
+import java.awt.*;
|
|
|
|
|
+import java.io.IOException;
|
|
|
|
|
+import java.io.OutputStream;
|
|
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
|
|
+import java.net.URLEncoder;
|
|
|
|
|
+import java.util.Optional;
|
|
|
|
|
+
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
@Service
|
|
@Service
|
|
|
public class WaterMarkManagerImpl implements IWaterMarkManager {
|
|
public class WaterMarkManagerImpl implements IWaterMarkManager {
|
|
@@ -33,24 +34,24 @@ public class WaterMarkManagerImpl implements IWaterMarkManager {
|
|
|
|
|
|
|
|
ImageFilter imageFilter = null;
|
|
ImageFilter imageFilter = null;
|
|
|
if (PositionEnum.TILE.equals(layout.getPosition())) {
|
|
if (PositionEnum.TILE.equals(layout.getPosition())) {
|
|
|
- imageFilter = new TileImageFilter(request.getContent(), font, Color.WHITE, style.getAlpha(), layout.getDegree(),
|
|
|
|
|
- layout.getInterval(), layout.getInterval(), layout.getCriscross());
|
|
|
|
|
|
|
+ imageFilter = new TileImageFilter(request.getContent(), font, Color.WHITE, style.getAlpha(), layout.getDegree(),
|
|
|
|
|
+ layout.getInterval(), layout.getInterval(), layout.getCriscross());
|
|
|
} else {
|
|
} else {
|
|
|
imageFilter = new Caption(request.getContent(), font, Color.BLUE, style.getAlpha(), layout.getPosition().getPosition(), 5);
|
|
imageFilter = new Caption(request.getContent(), font, Color.BLUE, style.getAlpha(), layout.getPosition().getPosition(), 5);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
HttpServletResponse response = Optional.ofNullable(
|
|
HttpServletResponse response = Optional.ofNullable(
|
|
|
- ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse())
|
|
|
|
|
- .orElseThrow();
|
|
|
|
|
|
|
+ ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse())
|
|
|
|
|
+ .orElseThrow();
|
|
|
response.setContentType("application/force-download");
|
|
response.setContentType("application/force-download");
|
|
|
response.setCharacterEncoding("UTF-8");
|
|
response.setCharacterEncoding("UTF-8");
|
|
|
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("测试123.jpg", "UTF-8"));
|
|
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("测试123.jpg", "UTF-8"));
|
|
|
|
|
|
|
|
try (OutputStream outputStream = response.getOutputStream()) {
|
|
try (OutputStream outputStream = response.getOutputStream()) {
|
|
|
Thumbnails.of("C:\\Users\\tyuio\\Desktop\\捕获(1).jpg")
|
|
Thumbnails.of("C:\\Users\\tyuio\\Desktop\\捕获(1).jpg")
|
|
|
- .scale(1, 1)
|
|
|
|
|
- .addFilter(imageFilter)
|
|
|
|
|
- .toOutputStream(outputStream);
|
|
|
|
|
|
|
+ .scale(1, 1)
|
|
|
|
|
+ .addFilter(imageFilter)
|
|
|
|
|
+ .toOutputStream(outputStream);
|
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
|
log.error("导出水印时发生异常", e);
|
|
log.error("导出水印时发生异常", e);
|
|
|
}
|
|
}
|