為了防止圖片被盜用,在圖片上加上水印是一種常用的方式。Java提供了許多API來處理圖像,並讓我們可以輕鬆地在圖像上添加水印。本文將介紹Java圖片加水印的幾種方法,並提供完整的演示代碼。
一、使用Java2D添加文字水印
Java2D提供了支持各種圖形操作的API,允許我們在圖像上進行繪製操作。因此,我們可以使用Java2D在圖片上添加文本水印。下面是一個通過Java2D在圖片上添加水印的例子:
public static void addTextWatermark(String text, File sourceImageFile, File destImageFile) throws IOException { BufferedImage sourceImage = ImageIO.read(sourceImageFile); Graphics2D g2d = (Graphics2D) sourceImage.getGraphics(); //設置文字透明度 AlphaComposite alphaChannel = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f); g2d.setComposite(alphaChannel); //設置文字字體 g2d.setFont(new Font("Arial", Font.BOLD, 64)); //設置文字顏色 Color textColor = Color.WHITE; g2d.setColor(textColor); //計算文字位置 FontMetrics fontMetrics = g2d.getFontMetrics(); Rectangle2D rect = fontMetrics.getStringBounds(text, g2d); int centerX = (sourceImage.getWidth() - (int) rect.getWidth()) / 2; int centerY = (sourceImage.getHeight() - (int) rect.getHeight()) / 2; //繪製文字 g2d.drawString(text, centerX, centerY); ImageIO.write(sourceImage, "png", destImageFile); g2d.dispose(); }
在上面的代碼中,我們首先讀取了源圖片,然後使用Graphics2D對象在圖片上添加文字水印。我們使用AlphaComposite類設置了透明度,並使用Font和Color設置了文字樣式和顏色。最後,我們調用ImageIO類的write方法保存帶有水印的圖片。
二、使用Java2D添加圖片水印
Java2D不僅可以添加文字水印,還可以添加圖片水印。下面是一個添加圖片水印的例子:
public static void addImageWatermark(File watermarkImageFile, File sourceImageFile, File destImageFile) throws IOException { BufferedImage sourceImage = ImageIO.read(sourceImageFile); BufferedImage watermarkImage = ImageIO.read(watermarkImageFile); //計算水印位置 Graphics2D g2d = (Graphics2D) sourceImage.getGraphics(); int x = (sourceImage.getWidth() - watermarkImage.getWidth()) / 2; int y = (sourceImage.getHeight() - watermarkImage.getHeight()) / 2; //在圖像上繪製水印 g2d.drawImage(watermarkImage, x, y, null); ImageIO.write(sourceImage,"png",destImageFile); g2d.dispose(); }
在上面的代碼中,我們首先讀取了水印圖像和源圖像。然後,我們計算了繪製水印的位置,並使用Graphics2D對象在源圖像上繪製水印。最後,我們保存帶有水印的圖片。
三、使用第三方庫添加水印
除了使用Java2D之外,還有一些第三方庫可以用於添加水印。下面是一個使用Thumbnails庫添加圖片水印的例子,Thumbnails庫是一個用於處理圖片大小和壓縮的Java庫。
public static void addImageWatermarkWithThumbnails(File watermarkImageFile, File sourceImageFile, File destImageFile) throws IOException { BufferedImage watermarkImage = ImageIO.read(watermarkImageFile); //在圖像上繪製水印並保存圖像 Thumbnails.of(sourceImageFile) .size(watermarkImage.getWidth(),watermarkImage.getHeight()) .watermark(Positions.CENTER, watermarkImage, 0.5f) .outputQuality(1.0f) .toFile(destImageFile); }
在上面的代碼中,我們首先讀取了水印圖像。然後,我們使用Thumbnails類載入源圖像,並在源圖像上繪製水印。最後,我們使用Thumbnails類將帶有水印的圖像保存到目標文件。
四、總結
本文介紹了Java圖片加水印的幾種方法。我們可以使用Java2D在圖像上添加文本和圖片水印,並可以使用第三方庫進行圖像處理。代碼示例完整,可直接在項目中使用。使用這些方法,我們可以輕鬆地保護我們的圖片免受盜用和濫用。
原創文章,作者:CRVOE,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/331722.html