
カラーキーマスクカラー画像の指定した色をマスク処理(切り抜き)します。
カラーキーマスクでは、画像の中の切り抜く色を指定できます。カラーキーマスクの画像として使えるのはRGB色空間のBMP形式(24ビット)画像です。透明化する色はRGBの各要素の値で指定します。マスクに指定する色は正確に指定する必要があります。もし、少しでも色が違うとカラーキーが有効になりません。
V6.0以降の『PDF Tool API』では、setColorKeyMaskColor()メソッドを用いることでマスクに指定する色をRGBの範囲指定で設定可能になりました。
package cookbook;
import jp.co.antenna.ptl.*;
public class AddImageSetColorkeyMask {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 6)
        {
            System.out.println("usage: java cookbook.AddImageSetColorkeyMask in-pdf-file out-pdf-file insert-image-file key-colorR key-colorG key-colorB");
            return;
        }
        ...【AppendPages.javaと同じ処理のため省略
             ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
             ・PtlParamOutputを用いて出力PDF名を指定】...
            //コマンドライン引数の取得
            String imageURI = args[2];
            int numPages = doc.getPageCount();
            System.out.println("ページ数:" + numPages);
            float keyColorR = Float.parseFloat(args[3]);
            float keyColorG = Float.parseFloat(args[4]);
            float keyColorB = Float.parseFloat(args[5]);
        ...【RemovePages.javaと同じ処理のため省略
             ・doc.getPages()メソッドを用いてPtlPages pagesにページコンテナを取得
             ・ページコンテナが空だった場合にエラーを出力して終了】...
                try (PtlPage page = pages.get(0);// 先頭ページの取得(パラメータindexは0が先頭)
                     PtlContent content = page.getContent();// ページコンテントの取得
                     PtlRect outputRect = page.getViewBox(); // 出力矩形の設定。(ページの大きさを得るためにViewBoxを取得する)
                     PtlParamInput insertImage = new PtlParamInput(imageURI); //画像指定に使うパラメータクラス
                     PtlColorDeviceRGB colorRGB = new PtlColorDeviceRGB(keyColorR, keyColorG, keyColorB); // カラーキーマスクで除外する色(RGB)を指定。
                     PtlParamDrawImage paramDrawImage = new PtlParamDrawImage()) //画像の描画に使うパラメータクラス
                {
                    //入力画像ストリームの設定
                    paramDrawImage.setImageStream(insertImage);
                    paramDrawImage.setMaskColor(colorRGB,PtlParamDrawImage.MASK_TYPE.MASK_COLORKEY);
                    // 画像出力
                    content.drawImage(outputRect, PtlContent.ALIGN.ALIGN_CENTER, paramDrawImage);
                }
                catch (IllegalArgumentException ex){//PtlContent.ALIGNの指定が誤っていた場合のエラーメッセージ
                    System.out.println(ex.getMessage());
                    System.out.println("ERROR : alignにはPtlContent.ALIGNに含まれる名前を指定してください。");
                    ex.printStackTrace();
                }
            }
        ...【AppendPages.javaと同じ処理のため省略
             ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力
             ・PtlException, Exception, Error を catchするエラー処理
             ・finally文で"--完了--"と表示する処理】...
    }
}
AddImageSetColorkeyMask.java
C:\samples>java cookbook.AddImageSetColorkeyMask usage: java cookbook.AddImageSetColorkeyMask in-pdf-file out-pdf-file insert-image-file key-colorR key-colorG key-colorB C:\samples>java cookbook.AddImageSetColorkeyMask A4sample.pdf A4-colorkey.pdf mask-RGB-24.bmp 1 0 0 ページ数:1 -- 完了 --
カラーキーマスクではマスクに使用する色を指定します。
