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();
}
}