import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
public class ImageUtils {
public BufferedImage addWatermark(InputStream is) {
BufferedImage image = null;
BufferedImage bufferedImage = null;
try {
image = ImageIO.read(is);
bufferedImage = new BufferedImage(image.getWidth(),
image.getHeight(),BufferedImage.TYPE_INT_RGB);
BufferedImage watermarkImage = getWatermarkImage(180,180);
Graphics2D g2d = (Graphics2D)bufferedImage.getGraphics();
g2d.drawImage(image, 0, 0, null);
g2d.drawImage(watermarkImage, null, null);
g2d.dispose();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bufferedImage;
}
public BufferedImage getWatermarkImage(int width, int height){
BufferedImage watermarkImg =
new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f);
Graphics2D g2d = (Graphics2D)watermarkImg.createGraphics();
g2d.setComposite(alpha);
String waterMark = "SML - SAMPLE ONLY - ";
g2d.setColor(Color.LIGHT_GRAY);
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d.setFont(new Font("Arial", Font.BOLD, 18));
FontMetrics fontMetrics = g2d.getFontMetrics();
Rectangle2D rect = fontMetrics.getStringBounds(waterMark, g2d);
int centerX = (width - (int) rect.getWidth()) / 2;
int centerY = (height - (int) rect.getHeight()) / 2;
int y = 10;
//int width = watermarkImg.getHeight();
AffineTransform origXform = g2d.getTransform();
for (int i = 0; i < centerY; i = i + 30) {
for (int x = 0; x < width; x++) {
g2d.rotate(Math.toRadians(35), x, y);
g2d.drawString(waterMark, x, y);
g2d.setTransform(origXform);
x += 125;
}
if (centerY > 1000) {
y += 100;
} else {
y += 50;
}
}
//Free graphic resources
g2d.dispose();
return watermarkImg;
}
------------------------------------------------代码引用
ImageUtils iu = new ImageUtils();
InputStream is = this.getImage(imageName);
BufferedImage bi = iu.addWatermark(is);