如何在 Java 中添加圖片浮水印:使用 GroupDocs.Watermark

在本教學中,您將學習 如何在 Java 中添加浮水印,透過使用 GroupDocs.Watermark 函式庫將圖片浮水印直接嵌入文件。無論是保護品牌資產或執行版權保護,以下步驟將帶您完成乾淨且可投入生產環境的實作。

快速回答

  • 需要的函式庫是什麼? GroupDocs.Watermark for Java ≥ 24.11.
  • 支援哪個 Java 版本? JDK 8 或更新版本。
  • 需要授權嗎? 是 – 生產環境使用需要臨時或正式授權。
  • 可以為 PDF 和圖片加浮水印嗎? 當然可以 – 函式庫支援 PDF、PNG、JPEG、DOCX、PPTX 等多種格式。
  • 支援多少種格式? 超過 50 種輸入與輸出格式,可在不將整個檔案載入記憶體的情況下處理數百頁的檔案。

什麼是「how to watermark java」?

「How to watermark java」 指的是在 Java 應用程式中以程式方式對檔案(PDF、圖片、Office 文件)套用視覺浮水印的過程。此技術透過將可辨識的標記直接嵌入內容,協助保護智慧財產與品牌識別。使用 GroupDocs.Watermark,您只需幾行程式碼即可在任何支援的格式上自動化此操作,確保大規模的一致保護。

為什麼要使用 GroupDocs.Watermark for Java?

GroupDocs.Watermark 支援 50+ 種文件與圖片格式,能處理超過 500 MB 的檔案,同時將記憶體使用量控制在 100 MB 以下,並提供內建的縮放、不透明度與旋轉選項。這些具體的能力使其成為企業級保護的可靠選擇。

前置條件

  • GroupDocs.Watermark for Java 版本 24.11 或更新。
  • JDK 8+(建議使用 JDK 11 或更新版本以獲得更佳效能)。
  • 如 IntelliJ IDEA 或 Eclipse 等 IDE。
  • 具備 Java I/O 串流的基本知識。

如何使用 GroupDocs.Watermark 為 Java 圖片加浮水印?

載入來源圖片,建立 ImageWatermark 物件,並在幾個方法呼叫內將其套用至目標文件。ImageWatermark 代表可定位、縮放且設定不透明度的視覺覆蓋圖片。函式庫在內部處理串流管理,您只需在儲存後關閉串流,即可輕鬆完成批次處理。

步驟 1:準備浮水印圖片串流

FileInputStream 從磁碟讀取浮水印圖片。此串流之後可重複用於多個文件。

步驟 2:初始化 Watermarker

Watermarker 類別是所有浮水印操作的入口點。它會載入目標文件,並提供加入或移除浮水印的方法。

步驟 3:建立 ImageWatermark 實例

ImageWatermark 代表視覺覆蓋層。您可在套用前設定不透明度、大小與位置。

步驟 4:套用浮水印

在 Watermarker 實例上呼叫 add(),傳入已配置好的 ImageWatermark。函式庫會立即在每頁上渲染覆蓋層。

步驟 5:儲存已加浮水印的檔案

使用 save() 將結果寫入新檔案。此方法會保留原始格式,維持品質與中繼資料。

步驟 6:釋放資源

務必關閉 FileInputStream 物件以避免記憶體洩漏,特別是在處理大量批次時。

實作指南

使用串流添加圖片浮水印

本節將詳細說明每個步驟,並提供實務專案的實用技巧。

步驟 1:為浮水印圖片建立 FileInputStream

FileInputStream 從檔案系統載入浮水印圖片。為獲得最佳效能,請將圖片大小控制在 500 KB 以下。

步驟 2:初始化 Watermarker

Watermarker 類別是 GroupDocs.Watermark 的核心 API 物件,代表您正在編輯的文件。

步驟 3:建立 ImageWatermark 物件

ImageWatermark 封裝圖片及其視覺屬性(不透明度、旋轉、縮放)。請調整這些設定以符合您的品牌指引。

步驟 4:將浮水印加入文件

呼叫 watermarker.add(imageWatermark) 以在文件的每一頁嵌入浮水印。

步驟 5:儲存已加浮水印的文件

watermarker.save("output_path") 會寫入修改後的檔案,同時保留原始格式。

步驟 6:關閉所有資源

對每個 FileInputStream 呼叫 close() 可釋放檔案句柄並釋放記憶體。

常見問題與解決方案

  • 大型 PDF 記憶體激增 – 使用 Watermarker.setLoadOptions(LoadOptions.memoryOptimized()) 以延遲方式處理頁面。
  • 浮水印顯示模糊 – 確保來源圖片至少 300 dpi;函式庫不會放大低解析度圖片。
  • 不支援的格式錯誤 – 請確認檔案副檔名列於 GroupDocs.Watermark 支援的格式(涵蓋超過 50 種格式)。

常見問答

Q: Watermarker 類別是什麼?
A: Watermarker 是主要的 API 物件,用於載入文件並提供加入、編輯或移除浮水印的方法。

Q: 如何設定浮水印的不透明度?
A: 使用 imageWatermark.setOpacity(0.5),其值範圍從 0(透明)到 1(完全不透明)。

Q: 可以批次處理多個檔案嗎?
A: 可以 – 迭代目錄,為每個檔案建立新的 Watermarker,套用相同的 ImageWatermark,然後儲存結果。

Q: 開發版是否必須使用授權?
A: 任何非評估用途皆需臨時授權;免費試用可使用至多 30 天。

Q: 函式庫是否支援受密碼保護的 PDF?
A: 完全支援 – 可透過 LoadOptions.setPassword("yourPassword") 將密碼傳遞給 Watermarker。

資源


最後更新: 2026-07-25
測試環境: GroupDocs.Watermark 24.11 for Java
作者: GroupDocs

<repositories>
    <repository>
        <id>repository.groupdocs.com</id>
        <name>GroupDocs Repository</name>
        <url>https://releases.groupdocs.com/watermark/java/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-watermark</artifactId>
        <version>24.11</version>
    </dependency>
</dependencies>
import com.groupdocs.watermark.License;

public class WatermarkSetup {
    public static void main(String[] args) {
        // Apply license if available
        License license = new License();
        try {
            license.setLicense("path/to/your/license.lic");
        } catch (Exception e) {
            System.out.println("Please apply for a free trial or purchase a license.");
        }
    }
}
import java.io.FileInputStream;

// Load the watermark image from your directory
FileInputStream watermarkStream = new FileInputStream("YOUR_DOCUMENT_DIRECTORY/watermark.jpg");
import com.groupdocs.watermark.Watermarker;

// Specify the document file path
Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/input_image.png");
import com.groupdocs.watermark.watermarks.ImageWatermark;

// Create a new ImageWatermark instance
ImageWatermark watermark = new ImageWatermark(watermarkStream);
// Add watermark to the watermarked image
target.add(watermark);
// Save the output document with the added watermark
target.save("YOUR_OUTPUT_DIRECTORY/output_image.png");
// Properly release resources by closing streams and watermarker
watermark.close();
target.close();
watermarkStream.close();

相關教學