GroupDocs.Watermark を使用した Java の画像透かし追加: 包括的ガイド

Java で画像透かしを追加することは、ブランド アイデンティティを保護し、文書の真正性を確保するための一般的な要件です。このチュートリアルでは、GroupDocs.Watermark ライブラリを使用して add image watermark java を行う方法を紹介し、画像ファイルの読み込みから既存の透かしの検索、そして新しい画像への置き換えまでをカバーします。最後まで読むと、PDF、Word ファイル、画像ベースの文書で動作する再利用可能なパターンが手に入ります。

簡単な回答

  • Java で画像透かしを処理できるライブラリはどれですか? GroupDocs.Watermark for Java.
  • 本番環境で使用するためにライセンスが必要ですか? Yes, a commercial license removes trial limitations.
  • PDF と Office ファイルを扱えますか? Yes, the API supports more than 30 formats.
  • 必要な Java バージョンは何ですか? JDK 8 or newer.
  • 依存関係を追加する唯一の方法は Maven ですか? Maven is recommended, but you can also download the JAR manually.

add image watermark java とは何ですか?

add image watermark java は、Java コードを使用して文書にラスタ画像(PNG、JPEG、BMP など)を埋め込むプロセスを指します。この手法により、元のコンテンツレイアウトを変更せずにロゴ、著作権表示、またはセキュリティスタンプを重ね合わせることができます。

なぜ GroupDocs.Watermark for Java を使用するのですか?

GroupDocs.Watermark は 30 以上の入力および出力フォーマット をサポートしており、PDF、DOCX、XLSX、PPTX、一般的な画像タイプなどが含まれます。また、数百ページにわたるファイルをメモリに全文ロードせずに処理できます。ライブラリのハッシュベース検索エンジンは 95 % 以上の精度で透かしを検出し、大規模アーカイブのスキャン時間を最大 70 % 短縮します。

前提条件

  • Java Development Kit (JDK): バージョン 8 以上がインストールされていること。
  • GroupDocs.Watermark for Java: バージョン 24.11(本ガイドで使用しているバージョン)。
  • Maven: 依存関係管理のために使用しますが、手動で JAR をダウンロードしても構いません。

Maven が初めての場合、以下の pom.xml スニペットは追加すべき内容を正確に示しています。

Maven の設定

GroupDocs.Watermark を依存関係として追加するために、以下の設定を pom.xml に追加してください:

<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>

直接ダウンロード

代わりに、最新バージョンを直接 GroupDocs.Watermark for Java releases からダウンロードできます。

ライセンス取得

  • Free trial: コア機能を試すためにトライアルパッケージをダウンロードしてください。
  • Temporary license: GroupDocs ポータルから期間限定キーを取得し、テスト期間を延長できます。
  • Commercial license: 本番環境で制限なく使用でき、優先サポートが受けられるフルライセンスを購入してください。

画像透かしを Java に追加する手順

Watermark クラスは透かし操作を行える文書を表します。ImageSearchOptions は画像透かしの検索基準を設定します。WatermarkSearchResult は検索で見つかった透かしのコレクションを保持します。setImage() メソッドは透かしの画像を置き換え、document.save() は変更された文書をディスクに書き込みます。

対象文書を読み込み、既存の透かしを検索し、新しい画像に置き換えます—すべて 3 つの簡潔なステップで行います。以下の直接的な説明では、個々の部分に入る前に全体の流れを解説します。

Watermark.load() で PDF(または他のサポート対象ファイル)を読み込み、ImageSearchOptions オブジェクトで指定したハッシュと一致する透かしを検索し、返されたコレクションを反復処理し、setImage() に新しいバイト配列を渡して呼び出し、最後に save() で変更された文書を保存します。このパターンは PDF、Word、Excel、PowerPoint、画像ファイルすべてで機能し、意図した透かしだけが変更されることを保証します。

ステップ 1: 画像ファイルを Java で読み込む

透かしを置き換えるには、まず新しい画像をバイト配列として用意する必要があります。以下のコードはディスク上の任意の画像ファイルをメモリに読み込み、透かし API に渡すことができます。

import com.groupdocs.watermark.Watermarker;

public class Main {
    public static void main(String[] args) {
        Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_PATH.pdf");
        // Proceed to use GroupDocs.Watermark functionalities.
    }
}

ステップ 2: 文書内の透かしを検索する

次に、検索基準を設定してエンジンに対象とする透かしを指示します。画像ハッシュ、サイズ、または不透明度で一致させることができ、以下の例は高精度のハッシュベースアプローチを使用しています。

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class LoadImageData {
    private static final String IMAGE_PNG_PATH = "YOUR_DOCUMENT_DIRECTORY/image.png";

    public byte[] loadImageData() throws Exception {
        File imageFile = new File(IMAGE_PNG_PATH);
        byte[] imageData = new byte[(int) imageFile.length()];
        try (InputStream imageInputStream = new FileInputStream(imageFile)) {
            imageInputStream.read(imageData); // Read the file into the byte array.
        }
        return imageData;
    }
}

ステップ 3: 透かしの画像を置き換える

最後に、見つかった透かしを反復処理し、ステップ 1 で作成した新しいバイト配列で各透かしの画像データを置き換えます。更新後、元の文書を保持するために新しいファイルとして保存します。

import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.search.ImageDctHashSearchCriteria;
import com.groupdocs.watermark.search.PossibleWatermarkCollection;

public class SearchForWatermarks {
    private static final String INPUT_PDF_PATH = "YOUR_DOCUMENT_DIRECTORY/document.pdf";

    public PossibleWatermarkCollection searchWatermarks() throws Exception {
        Watermarker watermarker = new Watermarker(INPUT_PDF_PATH);
        ImageDctHashSearchCriteria searchCriteria = new ImageDctHashSearchCriteria("YOUR_DOCUMENT_DIRECTORY/logo.bmp");
        
        return watermarker.search(searchCriteria);
    }
}

一般的な問題とトラブルシューティング

LoadOptions を使用すると、文書を開く際にパスワードや読み込みモードなどのパラメータを指定できます。LoadMode 列挙型は、例えばストリーミングアクセス用の STREAM など、ファイルの読み込み方法を定義します。

症状考えられる原因対策
透かしが見つかりません検索ハッシュが一致しません(解像度や色深度が異なる)正確な元ファイルからハッシュを生成するか、ImageSearchOptions.setSimilarity(0.85) を使用してあいまい検索を許可してください。
大きな PDF でメモリ不足エラー文書全体がメモリにロードされているWatermark.load(inputPath, LoadOptions.create().setLoadMode(LoadMode.STREAM)) を使用してファイルをストリーミングしてください。
保存された文書が破損している出力ストリームが正しく閉じられていないtry‑with‑resources を出力ストリームに使用するか、保存後に document.close() を呼び出してください。
新しい透かしがずれて表示される元の透かしに回転またはスケーリングのメタデータが含まれていた元の Watermark.getTransform() 設定を保持し、watermark.setTransform(originalTransform) を使用して新しい画像に適用してください。

よくある質問

Q: パスワードで保護された PDF に透かしを追加できますか?
A: はい。Watermark.load(path, new LoadOptions(password)) で文書を読み込めば、API が復号して処理します。

Q: GroupDocs.Watermark は SVG 画像をサポートしていますか?
A: ライブラリは SVG ファイルを PNG にラスタライズして埋め込むことはできますが、ネイティブな SVG 挿入は現在利用できません。

Q: 1 回の呼び出しで処理できるページ数はどれくらいですか?
A: ストリーミングアーキテクチャにより、500 ページ以上 の文書を全文メモリにロードせずに処理できます。

Q: 同一文書に複数の異なる透かしを追加できますか?
A: もちろんです。各画像ごとに別々の Watermark オブジェクトを作成し、document.add(watermark) をそれぞれ呼び出します。

Q: Java SDK がサポートしているプラットフォームは何ですか?
A: Windows、Linux、macOS がすべてサポートされており、Docker コンテナを含む任意の JVM 互換環境で動作します。


最終更新日: 2026-08-04
テスト環境: GroupDocs.Watermark 24.11 for Java
作者: GroupDocs

import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.search.PossibleWatermarkCollection;

public class ReplaceImageInWatermarks {
    private static final String OUTPUT_PDF_PATH = "YOUR_OUTPUT_DIRECTORY/modified_document.pdf";
    
    public void replaceImages(PossibleWatermarkCollection watermarks, byte[] newImageData) throws Exception {
        Watermarker watermarker = new Watermarker(INPUT_PDF_PATH);

        for (PossibleWatermark watermark : watermarks) {
            try {
                watermark.setImageData(newImageData);
            } catch (Exception e) {
                // Handle exceptions related to unsupported formats or entities.
            }
        }

        watermarker.save(OUTPUT_PDF_PATH);
        watermarker.close();
    }
}

関連チュートリアル