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就好了  看来还是得多学英语啊!

猜你喜欢

转载自blog.csdn.net/qq_38689769/article/details/79985677