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;
public final class ImageUtils {
/**
* 这个方法能够将一张图片绘制到另一张图片之上
*
* @param pressImg
* 水印图片
* @param targetImg
* 被写水印的图片
*/
public final static void pressImage(String pressImg, String targetImg) {
try {
// 初始化被写水印的图片
File _file = new File(targetImg);
Image src = ImageIO.read(_file);
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 - 10, height - height_biao
- 10, 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) {
// 将F:/dtshop/tupian目录下的所有文件,全部加上水印
File file = new File("F:/dtshop/tupian");
String[] files = file.list();
for (int i = 0; i < files.length; i++) {
String tempUrl = "F:/dtshop/tupian/" + files[i];
pressImage("F:/dtshop/dhshop.png", tempUrl);
}
}
}