/**
*
* @param file 文件
* @param path 上传文件路径
* @param folder 保存文件的文件夹
* @return 返回文件路径
* @throws Exception
*/
public static String addWatermark(MultipartFile file, String path, String folder) throws Exception {
// 原图位置, 输出图片位置, 水印文字颜色, 水印文字
// 读取原图片信息
Image srcImg = ImageIO.read(file.getInputStream());
int srcImgWidth = srcImg.getWidth(null);
int srcImgHeight = srcImg.getHeight(null);
// 加水印
BufferedImage bufImg = new BufferedImage(srcImgWidth,
srcImgHeight,
BufferedImage.TYPE_INT_RGB);
//获取 Graphics2D 对象
Graphics2D g = bufImg.createGraphics();
//设置绘图区域
g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
//设置字体
Font font = new Font("宋体", Font.PLAIN, 40);
// 根据图片的背景设置水印颜色
g.setColor(Color.green);
g.setFont(font);
//获取文字长度
int len = g.getFontMetrics(
g.getFont()).charsWidth("图片來源:戒烟的李白".toCharArray(),
0,
"图片來源:戒烟的李白".length());
int x = srcImgWidth - len - 10;
int y = srcImgHeight - 20;
g.drawString("图片來源:戒烟的李白", x, y);
g.dispose();
// 输出图片
String fileSrc = path + "/" + folder + "/" + UUIDUtils.getUUID() + ".jpg";
File waterFile = new File(path + "/" + folder);
if(!waterFile.exists()) waterFile.mkdirs();
FileOutputStream outImgStream = new FileOutputStream(fileSrc);
ImageIO.write(bufImg, "png", outImgStream);
outImgStream.flush();
outImgStream.close();
return fileSrc;
}