4.2.1 カラーキーマスクを施した画像のPDF化

images/ImageToPdfColorkeyMask-top.png

狙い・効果

画像ファイルにカラーキーマスクを施した上でPDF化します。

処理の概要

カラーキーマスクで指定した色を透明化して描画できます。カラーキーマスクの画像として使えるのはRGB色空間のBMP形式(24ビット)画像です。透明化する色はRGBの各要素の値で指定します。PDF Tool API V6以降ではこのR、G、B各要素の範囲を上限値下限値で指定できます。

本サンプルプログラムでは、入力画像ファイルにカラーキーマスク処理を施したものを新しいPDFドキュメントとして出力します。カラーキーのRGBの各要素の上限値、下限値はコマンドライン引数で0.0 ~ 1.0の範囲で指定します。

それ以外の設定・動作は「4.1.1 ページの作成」と同じです。

PDF Tool APIの主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class ImageToPdfColorkeyMask {

    // そのクラスのusageを表示する関数
    private static void printUsage() {
        System.out.print("usage: java ImageToPdfColorkeyMask image-file");
        System.out.println(" out-pdf-file key-colorR key-colorG key-colorB");
     }


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 5)
        {
            printUsage();
            return;
        }

        try (PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlPDFDocument doc = new PtlPDFDocument();
             PtlPages pages = doc.getPages()) { // ページコンテナの取得
            // 画像描画パラメータ
            // 画像ファイル
            // 画像ページパラメータ
            try (PtlParamDrawImage paramDrawImage = new PtlParamDrawImage(); 
                 PtlParamInput inputImage = new PtlParamInput(args[0]);       
                 PtlParamImagePage paramImagePage = new PtlParamImagePage()) {
                // 画像描画パラメータに画像ファイルを設定
                paramDrawImage.setImageStream(inputImage);


                //コマンドライン引数の取得
                float keyColorR = Float.parseFloat(args[2]);
                float keyColorG = Float.parseFloat(args[3]);
                float keyColorB = Float.parseFloat(args[4]);

                // カラーキーマスクで除外する色(RGB)を指定。
                try (PtlColorDeviceRGB colorRGB =
                     new PtlColorDeviceRGB(keyColorR, keyColorG, keyColorB)) {
                    paramDrawImage.setMaskColor(colorRGB,
                                                PtlParamDrawImage.MASK_TYPE.MASK_COLORKEY);
                }

                // 画像ページパラメータに画像描画パラメータを設定
                paramImagePage.setImage(paramDrawImage);

                // 画像ページのサイズを画像サイズにあわせる
                paramImagePage.setPaperType(PtlParamImagePage.PAPER_TYPE.PAPER_IMAGE_SIZE);

                // 画像の配置を設定
                paramImagePage.setAlign(PtlParamImagePage.ALIGN.ALIGN_CENTER);

                // ページコンテナに画像ページパラメータを追加
                pages.append(paramImagePage);
            }

            // ファイルに保存します。
            doc.save(outputFile);
        }
	...【AppendAnnotStampDefault.javaと同じ処理のため省略
	  ・エラーメッセージ処理と出力】...
    }
}

プログラムファイル名

ImageToPdfColorkeyMask.java

入出力操作の例

C:\samples>java cookbook.ImageToPdfColorkeyMask 
usage: java ImageToPdfColorkeyMask image-file out-pdf-file key-colorR key-colorG key-colorB

C:\samples>java cookbook.ImageToPdfColorkeyMask mask-RGB-24.bmp imagecolorkey-100.pdf 1 0 0 
-- 完了 --

C:\samples>java cookbook.ImageToPdfColorkeyMask mask-RGB-24.bmp imagecolorkey-010.pdf 0 1 0 
-- 完了 --

C:\samples>java cookbook.ImageToPdfColorkeyMask mask-RGB-24.bmp imagecolorkey-001.pdf 0 0 1 
-- 完了 --

左が元の画像(mask-RGB-24.bmp)、右は上から赤、緑、青のカラーキーマスクを施してPDF化した結果を並べています。

カラーキーマスクを施した画像のPDF化