THotPDF.DecodeLoadedImageColorKeyMask Method
ディクショナリに配列形式の /Mask エントリを持つロード済み画像について、カラーキーマスクのビットマップを構築します
宣言
function DecodeLoadedImageColorKeyMask(
AImageStream: THPDFStreamObject): TBitmap;
ユニット
HPDFDoc
パラメータ
| 名前 | 目的 |
|---|---|
AImageStream | ディクショナリにカラーキーの /Mask 配列を含む、ロード済み画像のストリームオブジェクト |
戻り値
画像サイズと一致する 24 ビットのグレースケールビットマップです。サンプルがすべてコンポーネント範囲内に収まるピクセルは黒、どれか 1 つでも範囲外のコンポーネントがあるピクセルは白で示されます。画像が対象外のときは nil になります
使用上の注意
- 対象判定は PDF のカラーキーマスキングの規則に倣います。画像はデコード可能であること、イメージマスクでないこと、色コンポーネントを 1〜4 個持つこと、コンポーネントごとに 2 値の /Mask 配列を持つことが条件です
- 範囲は
/Decodeより前の、保存状態のサンプルと比較されます。Indexed 画像ではそれがパレットインデックスになるため、同じ色の 2 つのエントリが異なるマスク扱いになることがあります - DCTDecode、JPXDecode、JBIG2Decode、CCITT エンコードのストリームは nil を返します。非可逆コーデックは正確なサンプル値を保持しないためです
RenderLoadedPageToBitmapとBuildLoadedPageSVGは、画像を描画するときにこのマスクを適用します- デコードは設定済みのデコードバイト予算を守るため、悪意ある画像や過大な画像もメモリを使い果たすのではなく、安全に失敗します
- 返されたビットマップの所有権は呼び出し側にあります。
DecodeLoadedImageStreamと組み合わせると、ビューアがどの領域をマスク扱いするかを確認できます