Image dictionary key /BitsPerComponent
`/BitsPerComponent` キーは、PDF Image XObject 辞書における必須エントリであり、画像内の各色成分を表現するために使用されるビット数を指定します。
/BitsPerComponent キーは、PDF Image XObject 辞書における必須エントリであり、画像内の各色成分を表現するために使用されるビット数を指定します。
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
によれば、この値は画像データのビット深度と色精度を決定します。許可される値は通常 1、2、4、8、または 16 ビット/成分であり、画像品質、ファイルサイズ、およびレンダリング精度に直接影響します。
/BitsPerComponent は、画像ストリーム内の各色成分のビット深度を定義する整数型の辞書エントリです。グレースケール画像では利用可能なグレーの階調を制御し、RGB 画像では赤、緑、青の各チャンネルに独立して適用されます。たとえば、値が 8 の場合、成分ごとに 256 個の値(2^8)が可能になり、値が 1 の場合は成分ごとに 2 つの値のみを持つバイレベル(白黒)画像が生成されます。
これは、使用される色モデルを定義する /ColorSpace や、空間的な寸法を定義する /Width および /Height とは異なります。これらのキーが色システムと画像サイズを決定するのに対し、/BitsPerComponent は色空間内で利用可能な色値の精度と範囲を具体的に制御します。色空間とビット/成分の組み合わせにより、総色深度が決定されます。たとえば、成分ごとに 8 ビットの RGB 画像は 24 ビットカラー(8 ビット × 3 成分)を生成します。
PDF 生成または操作を行う開発者にとって、/BitsPerComponent を正しく設定することは、画像品質とファイルサイズのバランスを取るために不可欠です。ビット深度が高いほど、滑らかなグラデーションとより正確な色再現が得られますが、ファイルサイズが大幅に増加します。モノクロ文書スキャンでは成分ごとに 1 ビットのみが必要かもしれませんが、高品質の写真では成分ごとに 8 ビットまたは 16 ビットが必要です。
/BitsPerComponent の値が正しくないと、レンダリングの失敗や予期しない視覚的結果を引き起こす可能性があります。PDF プロセッサはこの値を使用して画像ストリームデータを正しくデコードします。指定された値が実際にエンコードされたデータ構造と一致しない場合、画像が表示されなかったり、破損してレンダリングされたりする可能性があります。このキーを理解することで、開発者はコンパクトなアーカイブ文書の作成や印刷品質の画像の維持など、特定のユースケースに対して PDF を最適化できます。
PDF レンダラーが Image XObject に遭遇すると、/BitsPerComponent 値を読み取って、バイナリ画像データストリームを解析する方法を決定します。レンダラーは画像ストリームをサンプルに分割します。各サンプルは 1 つの色成分値を表し、各成分値に対して指定されたビット数を正確に抽出します。
8 ビットグレースケール画像の場合、各ピクセルは 1 つの 8 ビットサンプルで構成されます。8 ビット RGB 画像の場合、各ピクセルには 3 つの 8 ビットサンプル(合計 24 ビット)が必要です。サンプルは通常、ストリーム内で順次パックされ、サンプル間にパディングはありません。
(
Citation: N.A., 2020
(N.A.).
(2020).
Document management — Portable document format — Part 2: PDF 2.0
.
International Organization for Standardization
Retrieved from
https://www.iso.org/standard/75839.html
)
で指定されているように、/BitsPerComponent の有効な値は色空間に依存します。ほとんどの色空間は 1、2、4、8、16 をサポートしていますが、一部の特殊な色空間には制限があります。
デコーダーは、/Decode 配列と組み合わせて /BitsPerComponent を使用し、生のサンプル値を色空間の値範囲にマッピングします。正しい /BitsPerComponent 設定がないと、プロセッサがビットストリーム内で 1 つのサンプルがどこで終わり、次のサンプルがどこで始まるかを認識できないため、このデコードプロセスは適切に機能しません。
- Image XObject – 画像データとその特性を定義する PDF ストリームオブジェクト
- ColorSpace – 画像サンプル値を解釈するために使用される色モデルを指定する辞書エントリ
- Decode array – 生のサンプル値を色空間範囲にマッピングする配列
- SMask – 透明度に使用されるソフトマスク(同様に /BitsPerComponent を使用)
- Width and Height – サンプル単位で画像寸法を定義する辞書エントリ
- (N.A.) (2020)
- (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html
