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