1. 程式人生 > >java給圖片新增水印工具類

java給圖片新增水印工具類

      給圖片新增水印這個功能以前做專案的時候遇到過 但是後來好久不用今天突然想起來  就隨筆記錄一下吧  隨便在記錄一下自己當初踩的坑

package Img;

import java.awt.Color;      
import java.awt.Font;      
import java.awt.Graphics;      
import java.awt.Image;      
import java.awt.image.BufferedImage;      
import java.io.File;      
import java.io.FileOutputStream;      
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;     
import javax.imageio.ImageIO;    

public class ImgUtil {
	 /**
	  * 新增圖片水印
	  * @param pressImg
	  * @param targetImg
	  * @param x
	  * @param y
	  */
	  public final static void pressImage(String pressImg, String targetImg,      
	             int x, int y) {      
	         try {      
	             File _file = new File(targetImg);      
	             Image src = ImageIO.read(_file);      
	             int wideth = src.getWidth(null);      
	             int height = src.getHeight(null);      
	             BufferedImage image = new BufferedImage(wideth, height,      
	                     BufferedImage.TYPE_INT_RGB);      
	             Graphics g = image.createGraphics();      
	             g.drawImage(src, 0, 0, wideth, height, null);      
	        
	             // 水印檔案      
	             File _filebiao = new File(pressImg);      
	             Image src_biao = ImageIO.read(_filebiao);      
	             int wideth_biao = src_biao.getWidth(null);      
	             int height_biao = src_biao.getHeight(null);      
	             g.drawImage(src_biao, wideth - wideth_biao - x, height      
	                     - height_biao - y, wideth_biao, height_biao, null);      
	             g.dispose();      
	             FileOutputStream out = new FileOutputStream(targetImg);      
	             JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);      
	             encoder.encode(image);      
	             out.close();      
	         } catch (Exception e) {      
	             e.printStackTrace();      
	         }      
	     }      
	        
	     /**    
	      * 新增文字水印 
	      *     
	      * @param pressText    
	      *             --文字    
	      * @param targetImg  
	      *             --目標圖片    
	      * @param fontName  
	      *             --字型名    
	      * @param fontStyle  
	      *             --字型樣式    
	      * @param color     
	      *             --字型顏色    
	      * @param fontSize     
	      *             --字型大小    
	      * @param x     
	      *             --X偏移量    
	      * @param y 
	      *             --Y偏移量    
	      */     
	        
	     public static void pressText(String pressText, String targetImg,      
	             String fontName, int fontStyle, int color, int fontSize, int x,      
	             int y) {      
	         try {      
	             File _file = new File(targetImg);      
	             Image src = ImageIO.read(_file);      
	             int wideth = src.getWidth(null);      
	             int height = src.getHeight(null);      
	             BufferedImage image = new BufferedImage(wideth, height,      
	                     BufferedImage.TYPE_INT_RGB);      
	             Graphics g = image.createGraphics();      
	             g.drawImage(src, 0, 0, wideth, height, null);      
	             g.setColor(Color.RED);      
	             g.setFont(new Font(fontName, fontStyle, fontSize));
	             g.drawString(pressText,wideth-x,height-y);      
	             g.dispose();      
	             FileOutputStream out = new FileOutputStream(targetImg);      
	             JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);      
	             encoder.encode(image);      
	             out.close();      
	         } catch (Exception e) {      
	             System.out.println(e);      
	         }      
	     }      
	        
	     public static void main(String[] args) {      
//	         pressImage("g:image/222.jpg", "g:image/225.jpg", 20, 20);      
	         pressText("JiangNan", "g:image/226.jpg","宋體",10,10,60,260, 40);  
	     }    
}

這個就是我的工具類 ,但是很多人直接複製會出錯,在g.drawString(str,x,y)這個方法中報錯java.lang.charsequence一開始感覺莫名其妙的但是仔細查了一下才發現是我的jdk的原因將jdk降級就OK了  我用的1.8 我將jdk將到了1.6就好了  看來還是得多學英語啊!