为图片添加图片水印
public void makeImageMark(File inFile, File outFile, String suffix, File markImage) {
Image img = null;
try {
img = ImageIO.read(inFile);
int width = img.getWidth(null);
int height = img.getHeight(null);
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(img.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);
ImageIcon imgIcon = new ImageIcon(Files.readAllBytes(markImage.toPath()));
Image con = imgIcon.getImage();
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.2f));
g.drawImage(con, width / 3, height / 3, null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
g.dispose();
ImageIO.write(bi, suffix, outFile);
} catch (IOException e) {
e.printStackTrace();
}
}
给PDF文件添加图片水印
public void makePdfMark(File inPdfFile, File outPdfFile, File markImage) {
try {
PdfReader reader = new PdfReader(new FileInputStream(inPdfFile));
PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(outPdfFile));
Rectangle page = reader.getPageSize(1);
float width = page.getWidth();
float height = page.getHeight();
com.itextpdf.text.Image img = com.itextpdf.text.Image.getInstance(markImage.getPath());
PdfGState gs = new PdfGState();
gs.setFillOpacity(0.5f);
img.setAbsolutePosition(width / 2, height / 2);
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
PdfContentByte over = stamp.getOverContent(i);
over.setGState(gs);
over.addImage(img);
}
stamp.close();
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
给pdf添加水印图片所需要的jar包
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>