### 为图片加水印文字

为图片加上水印文字，可以很好的保护自己的版权信息。如在互联网之中，一个优秀、漂亮的图片经常被多次转载，或被其他的网站所盗取利用，这样浏览者就不知道图片的真正出处。但如果为图片加上水印文字说明，就可以很好的保护图片的所属版权。本程序将通过所学习的字符串知识，并借助于已有类来实现图片加水印功能，实例运行效果如图 1、图 2 所示。

图 1 加入水印效果

图 2 加入水印效果

#### 已有类

位置：应用/源码管理/类库/StringPhoto.jar

#### 关键技术

本程序借助于已有类 StringPhoto.jar 实现，该已有类中包括 FileChooser 类与 ImagePanel 类，下面分别介绍。

（1）FileChooser 类

此类实现打开窗口选择本地文件。

l 构造方法

FileChooser 类提供无参的构造方法，其语法格式如下：

public FileChooser()

通过此构造方法实例化 FileChooser 类，将弹出打开图片文件窗口，如图 3 所示。

图 3 打开文件窗口

l getPath()方法

getPath()方法用于获取所选择的文件路径，此方法返回文件路径的字符串形式，如“c:\img.jpg”。其语法格式如下：

public String getPath()

（2）ImagePanel 类

是一个图片面板类，主要用于对图片写入文字水印及显示写入水印后的图片，在使用过程直接将其放置于窗体之中。

l draw()方法

draw()方法用于对图片文件写入水印文字，其语法格式如下：

public void draw(String text, String path)

text 参数：写入水印的文字。

path 参数：图片路径。

#### 实现步骤

下面我们来介绍为图片加水印文字的实现步骤。

（1）创建一个 Java 项目，名称为“图片加水印”，并将 StringPhoto.jar 添加到构建路径。

（2）创建一个名称为 MainFrame 的 JFrame 窗体，窗体标题为“图片加水印”，并将其保存在 com.lyq 包中。

（3）通过选择按钮查找已有类 ImagePanel，此类是一个面板对象，可直接将其添加到窗体的中央位置，如图 4 所示。

图 5 添加“ImagePanel”面板

添加此面板后，在代码视图中包含如下代码：

final ImagePanel imagePanel = new ImagePanel();

getContentPane().add(imagePanel, BorderLayout.CENTER);

（4）在已添加的 ImagePanel 面板下方，添加文本标签（JLable）、文本框（JTextField）、按钮（JButton）组件，如图 5 所示：

图 5 添加所需组件

（5）双击“打开文件”按钮为按钮添加事件，在此操作中将通过已有类 FileChooser 选择文件，然后对选择的文件通过 ImagePanel 对象写入水印文字，其关键代码如下：

button.addActionListener(new ActionListener() {

public void actionPerformed(final ActionEvent e) {

// 获取输入的水印文字

String text = textField.getText();

// 对输入进行有效性判断

if(text == null || text.isEmpty()){

// 如果没有输入水印文字提示输入水印文字

JOptionPane.showMessageDialog(null, "请输入水印文字！");

}else{

// 实例化已有类 FileChooser 对象

FileChooser fileChooser = new FileChooser();

// 获取所选择文件的路径

String path = fileChooser.getPath();

// 对路径字符串进行有效性判断

if(path != null && !path.isEmpty()){

// 加入水印文字

imagePanel.draw(text, path);

}

}

}

});