在Java中,可以使用Java的圖像處理庫,例如BufferedImage和Graphics2D,來實現JFIF格式圖片的水印添加。以下是一個簡單的示例:
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Watermark {
public static void main(String[] args) {
try {
// 讀取原始圖片
BufferedImage originalImage = ImageIO.read(new File("path/to/your/original/image.jpg"));
// 創建一個新的BufferedImage對象,用于存儲添加水印后的圖片
BufferedImage watermarkedImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_RGB);
// 獲取Graphics2D對象,用于繪制水印
Graphics2D g2d = watermarkedImage.createGraphics();
// 繪制原始圖片到新的BufferedImage對象上
g2d.drawImage(originalImage, 0, 0, null);
// 設置水印文字的屬性
g2d.setFont(new Font("Arial", Font.BOLD, 24));
g2d.setColor(Color.RED);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
// 計算水印文字的位置
int x = originalImage.getWidth() - g2d.getFontMetrics().stringWidth("Watermark") - 10;
int y = originalImage.getHeight() - g2d.getFontMetrics().getHeight() - 10;
// 繪制水印文字
g2d.drawString("Watermark", x, y);
// 釋放資源
g2d.dispose();
// 將添加了水印的圖片保存到文件
ImageIO.write(watermarkedImage, "jpg", new File("path/to/your/watermarked/image.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
這個示例中,我們首先讀取原始圖片,然后創建一個新的BufferedImage對象,用于存儲添加水印后的圖片。接著,我們獲取Graphics2D對象,用于繪制水印。我們繪制原始圖片到新的BufferedImage對象上,并設置水印文字的屬性。然后,我們計算水印文字的位置,并繪制水印文字。最后,我們將添加了水印的圖片保存到文件。
注意:請將代碼中的"path/to/your/original/image.jpg"和"path/to/your/watermarked/image.jpg"替換為你的原始圖片和水印后的圖片的實際路徑。