在 Java 编程中,可以使用 java.awt
和 javax.imageio
包中的类来处理图片。以下是一个示例代码,展示如何为图片添加文字水印并保存图片。
一、代码实现
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageWatermark {
public static void addWatermark(String imagePath, String outputPath, String watermarkText) {
try {
// 读取图片
BufferedImage image = ImageIO.read(new File(imagePath));
// 创建一个新的图像对象
BufferedImage newImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = newImage.createGraphics();
// 绘制原始图像
g2d.drawImage(image, 0, 0, null);
// 设置水印字体
Font font = new Font("Arial", Font.BOLD, 24);
g2d.setFont(font);
// 设置水印颜色
Color color = new Color(255, 255, 255, 128); // 白色透明文字
g2d.setColor(color);
// 设置绘制质量
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 获取图片大小
int width = image.getWidth();
int height = image.getHeight();
// 文字水印位置
int x = width - 200; // 距离右边 200 像素
int y = height - 50; // 距离底部 50 像素
// 绘制水印文字
g2d.drawString(watermarkText, x, y);
// 关闭绘图上下文
g2d.dispose();
// 保存图片
ImageIO.write(newImage, "JPEG", new File(outputPath));
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// 输入图片路径
String imagePath = "input.jpg";
// 输出图片路径
String outputPath = "output.jpg";
// 水印文字
String watermarkText = "Sample Watermark";
// 添加水印
addWatermark(imagePath, outputPath, watermarkText);
}
}
二、代码解析
- 读取图片:使用
ImageIO.read
方法读取输入图片。 - 创建新图像对象:创建一个
BufferedImage
对象,用于处理图片。 - 绘制原始图像:将原始图像绘制到新的图像对象上。
- 设置水印字体:使用
Font
类设置水印文字的字体样式和大小。 - 设置水印颜色:使用
Color
类设置水印文字的颜色和透明度。 - 绘制水印文字:使用
Graphics2D.drawString
方法将水印文字绘制到图片的指定位置。 - 保存图片:使用
ImageIO.write
方法将处理后的图片保存到文件。
三、运行步骤
- 准备一张图片,保存为
input.jpg
。 - 将上述代码保存为
ImageWatermark.java
。 - 编译并运行代码:
javac ImageWatermark.java java ImageWatermark
- 检查输出文件
output.jpg
,确保水印已正确添加。
四、注意事项
- 图片格式:确保输入图片格式为 JPG 或 PNG。
- 水印位置:可以通过调整
x
和y
的值来改变水印的位置。 - 水印透明度:通过调整
Color
的透明度值(第四位参数),可以使水印更透明。
通过以上代码,你可以在 Java 中轻松实现为图片添加水印的功能。