java给图片添加水印文字

  1. package com.mmq.watermark;  
  2.   
  3. import java.awt.Color;  
  4. import java.awt.Font;  
  5. import java.awt.Graphics2D;  
  6. import java.awt.Image;  
  7. import java.awt.image.BufferedImage;  
  8. import java.io.File;  
  9. import java.io.FileOutputStream;  
  10.   
  11. import javax.imageio.ImageIO;  
  12.   
  13. /** 
  14.  *  
  15.  * @use java给图片添加水印文字 
  16.  * @ProjectName stuff 
  17.  * @Author mumaoqiang
     
  18.  * @Date 2012-7-19 下午10:27:54 
     
  19.  * @FullName com.mmq.watermark.WaterMarkUtils.java 
     
  20.  * @JDK 1.6.0 
     
  21.  * @Version 1.0 
     
  22.  */  
  23. public class WaterMarkUtils {  
  24.     /** 
  25.      * 图片添加水印 
  26.      * @param srcImgPath 需要添加水印的图片的路径 
  27.      * @param outImgPath 添加水印后图片输出路径 
  28.      * @param markContentColor 水印文字的颜色 
  29.      * @param waterMarkContent 水印的文字 
  30.      */  
  31.     public void mark(String srcImgPath, String outImgPath, Color markContentColor, String waterMarkContent) {  
  32.         try {  
  33.             // 读取原图片信息  
  34.             File srcImgFile = new File(srcImgPath);  
  35.             Image srcImg = ImageIO.read(srcImgFile);  
  36.             int srcImgWidth = srcImg.getWidth(null);  
  37.             int srcImgHeight = srcImg.getHeight(null);  
  38.             // 加水印  
  39.             BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);  
  40.             Graphics2D g = bufImg.createGraphics();  
  41.             g.drawImage(srcImg, 00, srcImgWidth, srcImgHeight, null);  
  42.             //Font font = new Font("Courier New", Font.PLAIN, 12);  
  43.             Font font = new Font("宋体", Font.PLAIN, 50);    
  44.             g.setColor(markContentColor); //根据图片的背景设置水印颜色  
  45.               
  46.             g.setFont(font);  
  47.             int x = srcImgWidth - getWatermarkLength(waterMarkContent, g) - 3;  
  48.             int y = srcImgHeight - 3;  
  49.             //int x = (srcImgWidth - getWatermarkLength(watermarkStr, g)) / 2;  
  50.             //int y = srcImgHeight / 2;  
  51.             g.drawString(waterMarkContent, x, y);  
  52.             g.dispose();  
  53.             // 输出图片  
  54.             FileOutputStream outImgStream = new FileOutputStream(outImgPath);  
  55.             ImageIO.write(bufImg, "jpg", outImgStream);  
  56.             outImgStream.flush();  
  57.             outImgStream.close();  
  58.         } catch (Exception e) {  
  59.             e.printStackTrace();  
  60.         }  
  61.     }  
  62.       
  63.     /** 
  64.      * 获取水印文字总长度 
  65.      * @param waterMarkContent 水印的文字 
  66.      * @param g 
  67.      * @return 水印文字总长度 
  68.      */  
  69.     public int getWatermarkLength(String waterMarkContent, Graphics2D g) {  
  70.         return g.getFontMetrics(g.getFont()).charsWidth(waterMarkContent.toCharArray(), 0, waterMarkContent.length());  
  71.     }  
  72.       
  73.     public static void main(String[] args) {  
  74.         // 原图位置, 输出图片位置, 水印文字颜色, 水印文字  
  75.         new WaterMarkUtils().mark("d:/postWatermark.jpg""d:/afterWatermark.jpg", Color.red, "水印效果测试");  
  76.    }  
  77. }  

你可能感兴趣的:(java)