public static void main(String[] args)
throws Exception
{
// 需要添加水印的图片的路径
InputStream is = new FileInputStream("WebRoot/images/ab.jpg");
// 通过JPEG图象流创建JPEG数据流解码器
JPEGImageDecoder jpegDecoder = JPEGCodec.createJPEGDecoder(is);
// 解码当前JPEG数据流,返回BufferedImage对象
BufferedImage buffImg = jpegDecoder.decodeAsBufferedImage();
// 得到画笔对象
Graphics g = buffImg.getGraphics();
// 创建你要附加的图象。
// 需要添加的图片水印
ImageIcon imgIcon = new ImageIcon("WebRoot/images/ac.jpg");
// 得到Image对象。
Image img = imgIcon.getImage();
// 将小图片绘到大图片上。
// x,y .表示你的小图片在大图片上的位置。
g.drawImage(img, 0, 0, null);
String onOff = "0"; // o or 1
int buffHeight_ = 93;
g.setColor(new Color(239 + 7, 253 + 2, 238 + 7));
Font fonts = new Font("宋体", Font.BOLD, 40);
g.setFont(fonts);
String strEnc = "";
addCipherText(g, onOff, buffHeight_, strEnc);
// 设置颜色。
g.setColor(Color.BLACK);
Font font = new Font("宋体", Font.PLAIN, 16);
g.setFont(font);
FontMetrics fm = g.getFontMetrics(font);
// 设置换行操作
int fontHeight = fm.getHeight(); // 字符的高度
int offsetLeft = 16;
int rowIndex = 2;
int buffHeight = 200;
//内容
String content = "尊敬的用户,请登录后继续阅读!";
for (int i = 0; i < content.length(); i++)
{
char c = content.charAt(i);
int charWidth = fm.charWidth(c); // 字符的宽度
// 另起一行
if (Character.isISOControl(c) || offsetLeft >= (920 - charWidth))
{
rowIndex++;
offsetLeft = 16;
}
if (rowIndex * fontHeight >= buffHeight - fontHeight)
{
break;
}
g.drawString(String.valueOf(c), offsetLeft, rowIndex * fontHeight); // 把一个个写到图片上
offsetLeft += charWidth; // 设置下字符的间距
}
g.dispose();
OutputStream os = new FileOutputStream("WebRoot/images/abc.jpg");
// 创键编码器,用于编码内存中的图象数据。
JPEGImageEncoder en = JPEGCodec.createJPEGEncoder(os);
en.encode(buffImg);
is.close();
os.close();
System.out.println("水印添加完成");
}
}