package com.test;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/** *//**
*
* @param pressImg 水印文件,最好用gif或者png可以支持透明
* @param scourceImg 原始图片文件
* @param targetImg 生成图片文件
* @param x 水印的横坐标
* @param y 水印的纵坐标
*/
public class WaterMark{
public final static void pressImage(String pressImg, String scourceImg, String targetImg, int x, int y){
try {
// 目标文件
File _file = new File(scourceImg);//读取要设置水印的原图片
Image src = ImageIO.read(_file);//通过io流建立一个文件地址
int width = src.getWidth(null);//获取原文件的宽度
int height = src.getHeight(null);//获取原问题件的高度
BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
g.drawImage(src, 0, 0, width, height, null);//画出原图
// 水印文件
//和读取原图是一样的
File _filebiao = new File(pressImg);//水印图片
Image src_biao = ImageIO.read(_filebiao);
int width_biao = src_biao.getWidth(null);
int height_biao = src_biao.getHeight(null);
g.drawImage(src_biao, width - width_biao - x, height - height_biao - y, width_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();
}
}
public static void main(String[] args){
//测试方法
System.out.println("图片处理中.......");
try{
WaterMark.pressImage("c:/press.png", "c:/source.jpg", "c:/target.jpg", 20,20);
System.out.println("图片处理完成.......");
}
catch(Exception e){
System.out.println("图片处理失败.......");
}
}
}