给图片增加水印

来源:互联网 发布:php磁力链接解析接口 编辑:程序博客网 时间:2024/06/05 18:04
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 blocke.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);

0 0