画像ファイルにカラーキーマスクを施した上でPDF化します。
カラーキーマスクで指定した色を透明化して描画できます。カラーキーマスクの画像として使えるのはRGB色空間のBMP形式(24ビット)画像です。透明化する色はRGBの各要素の値で指定します。PDF Tool API V6以降ではこのR、G、B各要素の範囲を上限値下限値で指定できます。
本サンプルプログラムでは、入力画像ファイルにカラーキーマスク処理を施したものを新しいPDFドキュメントとして出力します。カラーキーのRGBの各要素の上限値、下限値はコマンドライン引数で0.0 ~ 1.0の範囲で指定します。
それ以外の設定・動作は「4.1.1 ページの作成」と同じです。
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化した結果を並べています。