酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

用java写出给图片文件或者pdf文件添加水印的代码

在Java中,添加水印到图片或PDF文件需要使用特定的库。以下分别给出给图片和PDF添加水印的示例代码。 1. 给图片添加水印(使用Java的BufferedImage和Graphics2D类): ```java import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class WatermarkOnImage { public static void addWatermark(String sourceImagePath, String targetImagePath, String watermarkText) throws IOException { // 读取原图片 BufferedImage originalImage = ImageIO.read(new File(sourceImagePath)); // 创建一个新的 BufferedImage 用于保存带水印的图片 BufferedImage watermarkedImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_RGB); // 获取 Graphics2D 对象 Graphics2D graphics = watermarkedImage.createGraphics(); // 设置水印文字属性 graphics.setColor(Color.RED); graphics.setFont(new Font("Arial", Font.BOLD, 40)); graphics.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); // 计算水印位置 int x = 10; int y = 10; // 添加水印 graphics.drawString(watermarkText, x, y); // 将原图片绘制到新的 BufferedImage 上,并保留水印 graphics.drawImage(originalImage, 0, 0, null); // 保存带水印的图片 ImageIO.write(watermarkedImage, "jpg", new File(targetImagePath)); // 关闭 Graphics2D 资源 graphics.dispose(); } public static void main(String[] args) throws IOException { addWatermark("source.jpg", "target.jpg", "Watermark Text"); } } ``` 2. 给PDF添加水印(使用Apache PDFBox库): 首先,确保已将PDFBox库添加到项目依赖中。以下是如何在PDF页面上添加文本水印: ```java import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.edit.PDPageContentStream; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.font.PDType1Font; import java.io.File; import java.io.IOException; public class WatermarkOnPdf { public static void addWatermark(String sourcePdfPath, String targetPdfPath, String watermarkText) throws IOException { try (PDDocument document = PDDocument.load(new File(sourcePdfPath))) { for (PDPage page : document.getPages()) { PDPageContentStream contentStream = new PDPageContentStream(document, page, true, true); // 设置字体和大小 PDFont font = PDType1Font.HELVETICA_BOLD; float fontSize = 40; // 计算水印的位置 float stringWidth = font.getStringWidth(watermarkText) * fontSize / 1000f; float yPos = page.getMediaBox().getHeight() - fontSize - 10; float xPos = (page.getMediaBox().getWidth() - stringWidth) / 2; // 设置透明度 contentStream.setNonStrokingColor(Color.LIGHT_GRAY); contentStream.setAlpha(0.5f); // 添加水印 contentStream.beginText(); contentStream.setFont(font, fontSize); contentStream.newLineAtOffset(xPos, yPos); contentStream.showText(watermarkText); contentStream.endText(); // 关闭内容流 contentStream.close(); } // 保存带有水印的PDF document.save(targetPdfPath); } } public static void main(String[] args) throws IOException { addWatermark("source.pdf", "target.pdf", "Watermark Text"); } } ``` 请根据实际需求调整上述代码中的字体、大小、颜色、透明度以及水印位置等参数。 [2024-02-22 16:00:43 | AI写代码神器 | 884点数解答]

相关提问