记录一哈
public RestResult<FileVO> uploadFile(MultipartFile file, String stepName, String handleTime, String userName) {
try {
if(StringUtils.isEmpty(handleTime)){
handleTime = DateTime.now().toString();
}
if(StringUtils.isEmpty(userName)){
userName = JwtUtil.getCurrentUser().getUserName();
}
// 加载原始图片
BufferedImage originalImage = ImgUtil.read(file.getInputStream());
BufferedImage imageRes = this.pressText(originalImage, stepName, handleTime, userName, Color.lightGray, 0.8f);
FileStreamDTO fileStreamDTO = new FileStreamDTO();
fileStreamDTO.setFileStream(ImgUtil.toBytes(imageRes, "jpg"));
fileStreamDTO.setFileName(file.getOriginalFilename());
fileStreamDTO.setBucket(commonDictConfig.get(CommonDictConfig.Code.SZ_BUCKET));
fileStreamDTO.setContentType(file.getContentType());
fileStreamDTO.setSize(fileStreamDTO.getFileStream().length);
return fileUtil.uploadImg(fileStreamDTO);
} catch (Exception e) {
e.printStackTrace();
return RestResult.fail("图像处理异常");
}
}
public static BufferedImage pressText (BufferedImage srcImage, String stepName, String handleTime, String userName, Color color, float alpha) {
final BufferedImage destImage = srcImage;
final Graphics2D gf = destImage.createGraphics();
// 抗锯齿
gf.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
gf.setColor(color);
Font font = new Font("宋体", Font.BOLD, destImage.getWidth() / 30);
gf.setFont(font);
// 透明度
gf.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
// 在指定坐标绘制水印文字(左下角绘制)
FontMetrics metrics = gf.getFontMetrics(font);
int textHeight = metrics.getAscent() - metrics.getLeading() - metrics.getDescent();
gf.drawString("构筑物:" + stepName, 12, destImage.getHeight() - 5 * (textHeight));
gf.drawString("时间:" + handleTime, 12, destImage.getHeight() - 3 * (textHeight));
gf.drawString("处理人:" + userName, 12, destImage.getHeight() - (textHeight));
gf.dispose();
int width = destImage.getWidth(null);
int height = destImage.getHeight(null);
BufferedImage destImage2 = new BufferedImage(width, height, 1);
Graphics2D g = destImage2.createGraphics();
g.drawImage(destImage, 0, 0, width, height, null);
g.setComposite(AlphaComposite.getInstance(10, alpha));
g.dispose();
return destImage2;
}