Java替多张图片添加水印
Java为多张图片添加水印
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); } } }