在Java中,我們可以通過一些工具類來實現圖像水印的嵌入和提取。
// 嵌入水印 public static void embedWatermark(File source, File watermark, File output) throws IOException { BufferedImage sourceImage = ImageIO.read(source); BufferedImage watermarkImage = ImageIO.read(watermark); Graphics2D g2d = (Graphics2D) sourceImage.getGraphics(); AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f); g2d.setComposite(alpha); g2d.drawImage(watermarkImage, 0, 0, null); g2d.dispose(); ImageIO.write(sourceImage, "png", output); } // 提取水印 public static boolean extractWatermark(File source, File watermark) throws IOException { BufferedImage sourceImage = ImageIO.read(source); BufferedImage watermarkImage = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D g2d = (Graphics2D) watermarkImage.getGraphics(); g2d.drawImage(sourceImage, 0, 0, null); g2d.dispose(); ImageIO.write(watermarkImage, "png", watermark); return true; }
以上兩個方法分別是嵌入水印和提取水印的方法。在嵌入水印的方法中,我們先將原始圖片和水印圖片都讀入,然后創建Graphics2D對象,并設置透明度,將水印圖片畫在原始圖片上面。最后將處理后的圖片寫入輸出文件中。 在提取水印的方法中,我們先讀入原始圖片,然后創建一張和原圖相同大小的BufferedImage對象,并將原始圖片繪制進去。最后將這張圖片寫入輸出文件中。提取水印的過程其實就是將原始圖片中的水印部分剝離出來。 以上就是Java中實現水印嵌入和提取的方法,希望對大家有所幫助。