`
pandong8183
  • 浏览: 56072 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java为多张图片添加水印

    博客分类:
  • J2EE
 
阅读更多
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);
		}
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics