1、主要涉及到的类
- BufferedImage // 缓存图片类(用于加载图片并获取画布绘画)
- Graphics2D //2D图形画布类(用于绘制水印字符)
- ImageIO // 图形IO类(用于将图形对象通过OutputStream输出)
- Font // 字体类(用于定义绘制水印的字体)
- Paint // 画笔类(用于定义绘画的颜色等属性)
2、主要涉及到的方法
- BufferedImage originalImage = ImageIO.read(inputStream); // 将指定输入流的图片读取,生成缓存图片对象
- ImageIO.write(bufferedImage, formatName, outputStream); // 将指定的图片写入到指定输出流
- Graphics2D g2 = bufferedImage.createGraphics(); // 获取图片画布
- g2.translate(offset, 0); // 将画布平移
- g2.rotate(Math.toRadians(rotateAngel));// 将画布旋转45度
- g2.drawString(customText,x,y); // 在指定位置绘制文本
- g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, fontAlpha));// 设置字体半透明
- g2.setFont(waterMarkFont); // 设置字体
- g2.setPaint(waterMarkPaint); // 设置字体颜色
3、加水印思路
- 读取原图片,将图片加载到BufferedImage对象中
- 创建一个与源文件图片尺寸大小相同的BufferedImage对象,用于生成带水印的图片
- 获取副本图片的画布,将原图片的内容绘制到副本BufferedImage对象中
- 将画布旋转45度,绘制水印
4、API调用示例
1 |
|
水印效果如下:

ImageWaterMarker 源代码如下:
1 |
|