E Oracle Multimediaで使用するイメージ・ロー・ピクセル・フォーマット

Oracleロー・ピクセル・イメージ・フォーマットは、サポートされていないイメージ・フォーマットをOracle Multimediaにインポートする開発者および上級ユーザーを対象としています。

Oracle Raw Pixelイメージ・フォーマットにより、イメージ内のピクセル・データに直接アクセスすることもできます。

この説明は、外部イメージにも適用されます。

E.1 ロー・ピクセルの概要

Oracle Multimediaは、アートワーク、写真などのイメージを圧縮して効率的に格納するのに適した多くの一般的なフォーマットをサポートし、これらのフォーマット間での変換機能を提供します。ただし、これらのフォーマットの多くにはある程度の独自性があり、そのコンテンツのフォーマットは大きく異なっている場合が多いため、イメージのピクセル・データへのアクセスが困難な場合があります。

ロー・ピクセル・フォーマットは、圧縮データ・ストリーム内のピクセルの位置を決定するために必要となる複雑な計算を実行せずにピクセル・データに直接アクセスする必要があるアプリケーションにとって有益です。これにより、フィルタ処理やエッジ検出などのピクセル指向のイメージ処理を実行するアプリケーションでは、イメージの読取りが簡単になります。このフォーマットは、イメージにデータを書き戻す必要のあるアプリケーションではさらに有益です。圧縮イメージでは単に1つのピクセルを変更しても、イメージ・ストリーム全体に影響する可能性があるため、非圧縮形式を提供することで、アプリケーションでは、ピクセル・データを直接書き込み、その後単一のprocess( )コマンドを使用してイメージを圧縮できます。

このフォーマットは、Oracle Multimediaで直接サポートされていない、単純な非圧縮フォーマットのデータを使用する場合にも有益です。この場合、データにロー・ピクセル識別子およびヘッダーを付加して、Oracle Multimediaにインポートできます。これらのイメージの読取りのみが必要な場合(インポートや変換など)のために、この機能は「外部イメージ・サポート」としてOracle Multimediaに組み込まれています。この機能とロー・ピクセル・フォーマットとの関連は、「外部イメージ・サポートとロー・ピクセル・フォーマット」を参照してください。

ロー・ピクセル・フォーマットでは、Oracle Multimediaに組み込まれていないイメージ・タイプのサポートに加えて、衛星イメージなどのNバンド・イメージの解釈も可能です。ロー・ピクセルを使用すると、別のイメージ・フォーマットへの変換中にNバンド・イメージのバンドを1つまたは3つ選択し、Nバンド・イメージをサポートしないプログラム内で簡単に視覚化することができます。ロー・ピクセル・フォーマットで作成されたイメージのバンドは、1つまたは3つのみです。

ロー・ピクセル・フォーマットの現在のバージョンは、1.0です。

E.2 ロー・ピクセル・イメージの構造

ロー・ピクセル・イメージは、4バイトのイメージ識別子、30バイトのイメージ・ヘッダー、0(ゼロ)バイト以上の任意のギャップ、およびピクセル・データをこの順序どおりに配置したもので構成されます。

ロー・ピクセル・イメージには色は割り当てられないため、色参照表が含まれないことに注意してください。

ロー・ピクセルのヘッダーは、イメージ識別子およびイメージ・ヘッダーで構成されます。イメージ・ヘッダーは、実際には複数のフィールドで構成されています。

イメージ内の先頭のバイトは実際にはオフセット0 (ゼロ)です。すべての整数フィールドは符号なし整数で、ビッグ・エンディアン・バイト順序で格納されます。

表E-1に、ロー・ピクセル・イメージのヘッダー構造を示します。

表E-1 ロー・ピクセル・イメージのヘッダー構造

名前 バイト 説明

イメージ識別子

0:3

ASCII値の「RPIX」を含む4バイトの文字配列。

この配列は、イメージがロー・ピクセル・イメージであることを示します。

イメージ・ヘッダー長

4:7

識別子フィールドを除く、このヘッダーのバイト単位の長さ。

このフィールドの値は、ヘッダー・フィールドとイメージ内のピクセル・データ間のギャップを作成するために大きくすることができます。

バージョン番号

8

イメージで使用されるロー・ピクセル・フォーマットのバージョン番号。

リリース番号

9

イメージで使用されるロー・ピクセル・フォーマットのリリース番号。

イメージの幅

10:13

ピクセル単位でのイメージの幅。

イメージの高さ

14:17

ピクセル単位でのイメージの高さ。

圧縮タイプ

18

イメージの圧縮タイプ。NONE、CCITT FAX Group 3またはCCITT FAX Group 4があります。

ピクセル順序

19

イメージのピクセル順序。NORMALまたはREVERSEがあります。

走査線順序

20

イメージの走査線順序。NORMALまたはINVERSEがあります。

インターリーブ

21

イメージのインターリーブ・タイプ。BIP、BILまたはBSQがあります。

バンド数

22

イメージ内のバンド数。1から255の範囲である必要があります。

赤チャネル番号

23

赤のデフォルトとして使用するチャネルのバンド番号。

イメージがグレースケールの場合、このフィールドはグレースケール・チャネル番号になります。

緑チャネル番号

24

緑のデフォルトとして使用するチャネルのバンド番号。

イメージがグレースケールの場合、このフィールドは0(ゼロ)になります。

青チャネル番号

25

青のデフォルトとして使用するチャネルのバンド番号。

イメージがグレースケールの場合、このフィールドは0(ゼロ)になります。

予約領域

26:33

現在は使用されていません。すべてのバイトを0(ゼロ)にする必要があります。

E.3 ロー・ピクセル・ヘッダー・フィールドの説明

ロー・ピクセル・ヘッダーには、注意する必要のあるフィールドがいくつかあります。

イメージ識別子

ロー・ピクセル・イメージの先頭の4バイトで、この識別子文字列は常にASCII値で「RPIX」(16進数では52 50 49 58)に設定されている必要があります。これらの文字は、イメージがRPIXフォーマットでエンコーディングされていることを示します。

この文字列は、現在はロー・ピクセルのすべてのバージョンで共通です。

イメージ・ヘッダー長

ロー・ピクセル・リーダーは、このフィールドに格納された値を使用して、ロー・ピクセル・イメージ内のピクセル・データ・セクションの開始点を検索します。イメージ内のピクセル・データのオフセットを検索するために、リーダーはイメージ識別子の長さ(常に4)を、イメージ・ヘッダー長フィールドの値に追加します。このため、ポスト・ヘッダー・ギャップのないロー・ピクセル1.0イメージの場合、ピクセル・データはオフセット34から開始されます。

バージョン1.0のロー・ピクセル・イメージでは、このフィールドには、通常、ロー・ピクセル・イメージ・ヘッダーの長さである整数値30が含まれます(イメージ識別子は含みません)。ただし、ロー・ピクセル・フォーマットでは、このフィールドに30以上の任意の値を含めることができます。ヘッダー・データの末尾と、このヘッダー長によって指定されたピクセル・データの先頭の間の領域内にあるすべての情報は、ロー・ピクセル・リーダーによって無視されます。これは、ピクセル・データ領域がロー・ピクセル・フォーマットと互換性のある既存のイメージにロー・ピクセル・ヘッダーを付加するユーザーには有益です。この場合、ヘッダー長は、既存のヘッダー長に30を加えた長さに設定されます。このヘッダーの最大長は、4,294,967,265バイトです(4バイトの符号なしフィールドに格納できる最大値から、ロー・ピクセル・フォーマットで必要とされる30バイトのヘッダーを差し引いた値)。このフィールドは、ビッグ・エンディアン・バイト順序で格納されます。

バージョン番号

イメージのエンコーディングに使用されるロー・ピクセル・フォーマットのバージョン番号を含むシングルバイトの整数です。ロー・ピクセルの現行バージョンは1.0であるため、このフィールドは1になります。

リリース番号

イメージのエンコーディングに使用されるロー・ピクセル・フォーマットのリリース番号を含むシングルバイトの整数です。ロー・ピクセルの現行バージョンは1.0であるため、このフィールドは0(ゼロ)になります。

イメージの幅

イメージのピクセル単位の幅(x寸法)です。

このフィールドには40億ピクセルを超えるイメージ寸法を格納可能ですが、Oracle Multimediaの内部制限のため、1から32767の範囲内の値を指定する必要があります。このフィールドは、ビッグ・エンディアン・バイト順序で格納されます。

イメージの高さ

イメージのピクセル単位の高さ(y寸法)です。

このフィールドには40億ピクセルを超えるイメージ寸法を格納可能ですが、Oracle Multimediaの内部制限のため、1から32767の範囲内の値を指定する必要があります。このフィールドは、ビッグ・エンディアン・バイト順序で格納されます。

圧縮タイプ

このフィールドには、ロー・ピクセル・イメージの圧縮タイプが含まれます。このフィールドには次の値が含められます:

表E-2 圧縮タイプ・フィールドの有効な値

名前 圧縮

1

NONE

圧縮なし

2

FAX3

CCITT Group 3圧縮

3

FAX4

CCITT Group 4圧縮

グレースケール、RGBおよびNバンド・イメージの場合、イメージは常に圧縮されないため、値は0 (ゼロ)のみが有効です。圧縮タイプの値が1または2の場合、イメージはモノクロであるとみなされます。この場合、イメージにはバンドが1つのみ含まれているとみなされるため、ピクセル順序にNORMAL、走査線順序にNORMAL、インターリーブにBIPを指定する必要があります。

ピクセル順序

このフィールドは、ロー・ピクセル・イメージ内のピクセル順序を示します。通常、走査線内のピクセルは、従来の正のx軸に沿って左から右に順序付けされます。ただし、一部のアプリケーションでは、走査線を右から左に順序付けする必要があります。

このフィールドには次の値が含められます:

表E-3 ピクセル順序フィールドの有効な値

名前 ピクセル順序

1

NORMAL

左端のピクセルが先頭

2

REVERSE

右端のピクセルが先頭

このフィールドに0 (ゼロ)を指定することはできません(その場合、ピクセル順序を指定しないことになり、イメージを解析できません)。CCITT G3およびG4圧縮タイプのイメージでは、このフィールドに値として1を含める必要があります。

走査線順序

このフィールドは、ロー・ピクセル・イメージ内の走査線順序を示します。通常、イメージ内の走査線は上から下に順序付けされます。ただし、一部のアプリケーションでは、走査線を下から上に順序付けする必要があります。

このフィールドには次の値が含められます:

表E-4 走査線順序フィールドの有効な値

名前 走査線順序

1

NORMAL

上端の走査線が先頭

2

INVERSE

下端の走査線が先頭

このフィールドに0 (ゼロ)を指定することはできません(その場合、走査線順序を指定しないことになり、イメージを解析できません)。CCITT G3およびG4圧縮タイプのイメージでは、このフィールドに値として1を含める必要があります。

インターリーブ

このフィールドは、ロー・ピクセル・イメージ内の様々なバンドのインターリーブを示します。様々なインターリーブ・オプションの詳細は、「バンド・インターリーブ」を参照してください。

このフィールドには次の値が含められます:

表E-5 インターリーブ・フィールドの有効な値

名前 インターリーブ

1

BIP

ピクセル単位のバンドのインターリーブ(チャンク方式)

2

BIL

ライン単位のバンドのインターリーブ

3

BSQ

順次バンド(プレーナ方式)

このフィールドに0 (ゼロ)を指定することはできません(その場合、インターリーブを指定しないことになり、イメージを解析できません)。CCITT G3およびG4圧縮タイプのイメージでは、このフィールドに値として1を含める必要があります。

バンド数

このフィールドは、イメージ内のバンドまたはプレーンの数を含み、1から255の範囲内の値を指定する必要があります。このフィールドの値には0 (ゼロ)を指定できません。

CCITTイメージの場合、このフィールドの値に1を指定する必要があります。

赤チャネル番号

このフィールドには、イメージ変換操作中に赤チャネルとして使用されるバンドの番号が含まれます。この番号は、標準のRGBイメージの解析方法を変更するため、またはNバンド・イメージ内で赤として使用されるデフォルトのバンドを指定するために使用できます。このデフォルトは、process( )メソッドまたはprocessCopy( )メソッドでinputChannels演算子を使用して上書きできます。

イメージのバンドが1つのみの場合や、Nバンド・イメージの1バンドのみを選択して表示する場合、そのバンド番号は赤チャネルとしてエンコーディングする必要があります。この場合、緑チャネルおよび青チャネルは0 (ゼロ)に設定する必要があります。

このフィールドの値には0 (ゼロ)を指定できません。1からバンド数の範囲内の値を指定する必要があります。

緑チャネル番号

このフィールドには、イメージ変換操作中に緑チャネルとして使用されるバンドの番号が含まれます。この番号は、標準のRGBイメージの解析方法を変更するため、またはNバンド・イメージ内で緑として使用されるデフォルトのバンドを指定するために使用できます。このデフォルトは、process( )メソッドまたはprocessCopy( )メソッドでinputChannels演算子を使用して上書きできます。

イメージのバンドが1つのみの場合や、Nバンド・イメージの1バンドのみを選択して表示する場合、そのバンド番号は赤チャネルとしてエンコーディングする必要があります。この場合、緑チャネルおよび青チャネルは0 (ゼロ)に設定する必要があります。

このフィールドには、0 (ゼロ)からバンド数の範囲内の値を指定できます。

青チャネル番号

このフィールドには、イメージ変換操作中に青チャネルとして使用されるバンドの番号が含まれます。この番号は、標準のRGBイメージの解析方法を変更するため、またはNバンド・イメージ内で青として使用されるデフォルトのバンドを指定するために使用できます。このデフォルトは、process( )メソッドまたはprocessCopy( )メソッドでinputChannels演算子を使用して上書きできます。

イメージのバンドが1つのみの場合や、Nバンド・イメージの1バンドのみを選択して表示する場合、そのバンド番号は赤チャネルとしてエンコーディングする必要があります。この場合、緑チャネルおよび青チャネルは0 (ゼロ)に設定する必要があります。

このフィールドには、0 (ゼロ)からバンド数の範囲内の値を指定できます。

予約領域

予約領域という名前のこれらの8バイトの用途は現在検討中ですが、この領域はロー・ピクセル1.0イメージ内でも確保されています。これらのすべてのバイトは0(ゼロ)にする必要があります。0にしない場合、予期しない結果になる場合があります。

E.4 ロー・ピクセルのポスト・ヘッダー・ギャップ

イメージ識別子やイメージ・ヘッダーとは別に、バージョン1.0のロー・ピクセル・イメージには、実際のピクセル・データに先行するオプションのポスト・ヘッダー・ギャップが含まれます。イメージ・ヘッダーの予約領域とは異なり、このギャップのバイトには、任意の値を含めることができます。これは、イメージに関する追加のメタデータを格納する場合に便利で、別のファイル・フォーマットの実際のイメージ・ヘッダーを指定することもできます。

ただし、このギャップに格納される情報に対する基準はないため、この領域にメタデータを格納する場合は、他のユーザーがそのデータに対して異なる解釈をする可能性があることに注意してください。また、ロー・ピクセル・イメージが処理されるときに、このギャップに格納された情報が宛先イメージにコピーされないことに注意してください。入力と同じ位置に出力を書き込むprocess( )メソッドでは、この処理が実行されたトランザクションをロールバックしないかぎり、ソース情報が消失します。

E.5 ロー・ピクセル・データ・セクションおよびピクセル・データ・フォーマット

ロー・ピクセル・イメージのデータ・セクションは、イメージの実際のピクセル・データが格納されます(この領域は、ビットマップ・データと呼ばれることもあります)。

CCITT圧縮を使用したイメージの場合、ビットマップ・データ領域には、追加ヘッダーなしのローCCITTストリームが格納されます。この説明は、非圧縮イメージに適用されます。

ロー・ピクセル・イメージのビットマップ・データは、1プレーン(1ピクセル)当たり8ビットの直接色のパック・データとして格納されます。ピクセル、走査線、またはバンドのブロック化や埋込みはありません。走査線は、一番上が最初になるか、一番下が最初になるようにイメージに表示できます。走査線内のピクセルは、一番左が最初になるか、一番右が最初になるように順序付けることができます。これらすべてのオプションは、比較的単純な方法でインターリーブに影響を受けます。

次の各項では、ロー・ピクセル・データに関連するこれらの内容の例について説明します。

E.5.1 走査線の順序付け

画面上に、あるイメージが次のように表示されるとします。

1111111111…
2222222222…
3333333333…
4444444444…

各桁は1つのピクセルを表し、桁の値はそのピクセルが存在する走査線を示しています。

通常、ピクセルの上部または上端の行を構成する走査線は、下部の走査線より前に、イメージ・データ・ストリーム内に格納されます。前述のイメージは、ビットマップ・データ・ストリームでは次のような形式になります。

…1111111111…2222222222…3333333333…4444444444…

先頭の走査線が他の走査線より先にあります。ロー・ピクセル・フォーマットでは、この走査線の順序付けをNORMALと呼びます。

ただし、一部のアプリケーションでは、次のとおり下端の走査線がデータ・ストリームの先頭になる方が適している場合があります。

…4444444444…3333333333…2222222222…1111111111…

ロー・ピクセル・フォーマットでは、この走査線の順序付けをINVERSEと呼びます。

E.5.2 ピクセルの順序付け

画面上に、あるイメージの走査線が次のように表示されるとします。

…123456789…

各桁は1つのピクセルを表し、桁の値はそのピクセルが存在する列を示しています。

通常、左端のピクセルを構成するデータは、右側のピクセルより前に、イメージ・データ・ストリーム内に格納されます。前述の走査線は、ビットマップ・データ・ストリームでは次のような形式になります。

…123456789…

左のピクセルが他のピクセルより先にあります。ロー・ピクセル・フォーマットでは、このピクセルの順序付けをNORMALと呼びます。

ただし、一部のアプリケーションでは、次のとおり右端のピクセルがデータ・ストリームの先頭になる方が適している場合があります。

…987654321…

ロー・ピクセル・フォーマットでは、このピクセルの順序付けをREVERSEと呼びます。

E.5.3 バンド・インターリーブ

バンド・インターリーブは、イメージ・バッファ内における、ピクセル・データの個々のバンドの相対位置を示します。

バンドは、イメージ・データ・ストリームに出現する順に、先頭のバンドを1、末尾のバンドをnとして順序付けされます。バンド0は、バンドまたはデータがないことを示します。

ピクセル単位のバンドのインターリーブ(BIP)(チャンク方式)

BIP (チャンク方式)イメージでは、ピクセル・データの個々のバンドまたはチャネルがピクセル単位で順次配置されるため、1つのピクセルのすべてのデータが1箇所に配置されます。イメージのバンドが赤、緑および青のチャネルである場合、BIPイメージは次のようになります。

scanline 1: RGBRGBRGBRGBRGBRGBRGB… 
scanline 2: RGBRGBRGBRGBRGBRGBRGB… 
scanline 3: RGBRGBRGBRGBRGBRGBRGB… 
…

ライン単位のバンドのインターリーブ(BIL)

BILイメージでは、ピクセル・データの個々のバンドが走査線単位で順次配置されるため、1つのピクセルのデータが、イメージの架空の複数行にわたって配置されます。これは、データを走査線単位でバッファに格納するセンサーのデータ構成を反映しています。イメージのバンドが赤、緑および青のチャネルである場合、BILイメージは次のようになります。

scanline 1: RRRRRRRRRRRRRRRRRRRRR…
            GGGGGGGGGGGGGGGGGGGGG…
            BBBBBBBBBBBBBBBBBBBBB…
scanline 2: RRRRRRRRRRRRRRRRRRRRR…
            GGGGGGGGGGGGGGGGGGGGG…
            BBBBBBBBBBBBBBBBBBBBB…
scanline 3: RRRRRRRRRRRRRRRRRRRRR…
            GGGGGGGGGGGGGGGGGGGGG…
            BBBBBBBBBBBBBBBBBBBBB…
…

順次バンド(BSQ)(プレーナ方式)

プレーナ・イメージでは、ピクセル・データの個々のバンドがビット・プレーン単位で順次配置されるため、1つのピクセルのデータが、イメージの複数のプレーンにわたって配置されます。これは、メモリー内の様々な位置からディスプレイの様々な電子銃を制御する一部のビデオ・バッファ・システムのデータ構成を反映しています。イメージのバンドが赤、緑および青のチャネルである場合、プレーナ・イメージは次のようになります。

plane 1: RRRRRRRRRRRRRRRRRR…  (part of scanline 1)
         RRRRRRRRRRRRRRRRRR…  (part of scanline 2)
         RRRRRRRRRRRRRRRRRR…  (part of scanline 3)
…
plane 2: GGGGGGGGGGGGGGGGGG…  (part of scanline 1)
         GGGGGGGGGGGGGGGGGG…  (part of scanline 2)
         GGGGGGGGGGGGGGGGGG…  (part of scanline 3)
…
plane 3: BBBBBBBBBBBBBBBBBB…  (part of scanline 1)
         BBBBBBBBBBBBBBBBBB…  (part of scanline 2)
         BBBBBBBBBBBBBBBBBB…  (part of scanline 3)
…

E.5.4 Nバンド・データ

ロー・ピクセル・フォーマットでは、イメージ内で最大255のデータ・バンドがサポートされています。3種類のデータ・バンドのインターリーブの例を含め、イメージ内のデータ・バンドの相対位置については、「バンド・インターリーブ」を参照してください。

単一バンドのデータの場合、インターリーブがないため、3つの方式はすべて同じになります。その他のバンド数のインターリーブの例を、次の表に示します。例で使用するすべてのイメージには、3つの走査線および4つの列が存在します。各ピクセルの各バンドは、1桁のバンド番号で表されます。カッコで囲まれていない標準テキストの番号はイメージの1つ目の走査線を示し、丸カッコで囲まれたイタリック体の番号はイメージの2つ目の走査線を示し、大カッコ([ ])で囲まれた太字の番号はイメージの3つ目の走査線を示します。

表E-6 バンドのインターリーブの例

バンド数 BIP BIL BSQ

2

12121212 (12121212) [12121212]

11112222 (11112222) [11112222]

1111(1111)[1111] 2222(2222)[2222]

4

1234123412341234 (1234123412341234) [1234123412341234]

1111222233334444 (1111222233334444) [1111222233334444]

1111(1111)[1111] 2222(2222)[2222] 3333(3333)[3333] 4444(4444)[4444]

5

12345123451234512345 (12345123451234512345) [12345123451234512345]

11112222333344445555 (11112222333344445555) [11112222333344445555]

1111(1111)[1111] 2222(2222)[2222] 3333(3333)[3333] 4444(4444)[4444] 5555(5555)[5555]

E.6 ロー・ピクセル・ヘッダーのC言語構造体

次のC言語構造体では、プログラム的な方法でロー・ピクセル・ヘッダーを記述しています。この構造体は、イメージ・ファイルに未整列のまま格納され(フィールドが1バイト境界上に配列されます)、すべての整数はビッグ・エンディアン・バイト順序で格納されます。

struct RawPixelHeader
{
unsigned char identifier[4]; /* Always "RPIX" */

unsigned long	hdrlength; /* Length of this header in bytes */
/* Including the hdrlength field */
/* Not including the identifier field */
/* &k.hdrlength + k.hdrlength = pixels */

unsigned char majorversion; /* Major revision # of RPIX format */
unsigned char minorversion; /* Minor revision # of RPIX format */

unsigned long width;  /* Image width in pixels */
unsigned long height; /* Image height in pixels */
unsigned char comptype;   /* Compression (none, FAXG3, FAXG4, ... ) */
unsigned char pixelorder; /* Pixel order */
unsigned char scnlorder;  /* Scanline order */
unsigned char interleave; /* Interleaving (BIP/BIL/BSQ) */

unsigned char numbands; /* Number of bands in image (1-255) */
unsigned char rchannel; /* Default red channel assignment */
unsigned char gchannel; /* Default green channel assignment */
unsigned char bchannel; /* Default blue channel assignment */
/* Grayscale images are encoded in R */
/* The first band is 1, not 0 */
/* A value of 0 means "no band" */

unsigned char reserved[8]; /* For later use */
};

E.7 ロー・ピクセル・ヘッダーのC言語定数

次のC言語定数では、ロー・ピクセル・ヘッダーで使用される値を定義します。

#define RPIX_IDENTIFIER "RPIX"

#define RPIX_HEADERLENGTH 30

#define RPIX_MAJOR_VERSION 1
#define RPIX_MINOR_VERSION 0

#define RPIX_COMPRESSION_UNDEFINED 0
#define RPIX_COMPRESSION_NONE 1
#define RPIX_COMPRESSION_CCITT_FAX_G3 2
#define RPIX_COMPRESSION_CCITT_FAX_G4 3
#define RPIX_COMPRESSION_DEFAULT RPIX_COMPRESSION_NONE

#define RPIX_PIXEL_ORDER_UNDEFINED 0
#define RPIX_PIXEL_ORDER_NORMAL 1
#define RPIX_PIXEL_ORDER_REVERSE 2
#define RPIX_PIXEL_ORDER_DEFAULT RPIX_PIXEL_ORDER_NORMAL

#define RPIX_SCANLINE_ORDER_UNDEFINED 0
#define RPIX_SCANLINE_ORDER_NORMAL 1
#define RPIX_SCANLINE_ORDER_INVERSE 2
#define RPIX_SCANLINE_ORDER_DEFAULT RPIX_SCANLINE_ORDER_NORMAL

#define RPIX_INTERLEAVING_UNDEFINED 0
#define RPIX_INTERLEAVING_BIP 1
#define RPIX_INTERLEAVING_BIL 2
#define RPIX_INTERLEAVING_BSQ 3
#define RPIX_INTERLEAVING_DEFAULT RPIX_INTERLEAVING_BIP

#define RPIX_CHANNEL_UNDEFINED 0

注意:

UNDEFINED値の様々なマクロは、説明目的のため、使用しないでください。例外として、RPIX_CHANNEL_UNDEFINEDは、単一バンド・イメージの緑と青のチャネルに使用されます。

E.8 ロー・ピクセルのPL/SQL定数

次のPL/SQL定数では、ロー・ピクセル情報に使用する値を定義します。これらの定数は、RPIXイメージ識別子の長さにRPIXヘッダーの長さを足した値を示します。

CREATE OR REPLACE PACKAGE ORDImageConstants AS 
  RPIX_HEADER_LENGTH_1_0   CONSTANT INTEGER := 34; 
END ORDImageConstants; 

E.9 CCITT圧縮を使用したロー・ピクセル・イメージ

ロー・ピクセル・フォーマットは、一般的に非圧縮の直接色イメージ用ですが、CCITT Fax Group 3またはFax Group 4圧縮を使用したモノクロ・イメージの格納にも対応しています。これは、ドキュメント管理アプリケーションなどで白黒ページのスキャンを格納する際に役立ちます。これらのイメージで使用される高解像度と組み合された未使用のデータ・ビットによってディスク領域が過剰に使用されるため、これらのイメージは、グレースケールとして格納しても通常は実用的ではありません。

CCITT圧縮を使用したロー・ピクセル・イメージは、標準のロー・ピクセル・イメージとして処理されます。この場合、次の条件を満たしている必要があります。

  • 圧縮タイプ・フィールドの値が、「ロー・ピクセル・ヘッダー・フィールドの説明」に示すとおり、1または2(FAX3またはFAX4)である。

  • ピクセル順序フィールドの値が1(NORMALピクセル順序)である。

  • 走査線順序フィールドの値が1(NORMAL走査線順序)である。

  • インターリーブ・フィールドの値が1(BIPインターリーブ)である。

  • バンド数フィールドの値が1(1バンド)である。

  • 赤チャネル番号フィールドの値が1である。

  • 緑チャネル番号フィールドおよび青チャネル番号フィールドの値が0(ゼロ)(バンドなし)である。

これらの条件に加えて、ピクセル・データに直接アクセスするアプリケーションでは、CCITTフォーマットのデータの読取りと書込みの方法を使用可能である必要があります。

E.10 外部イメージ・サポートとロー・ピクセル・フォーマット

Oracle Multimediaでは、少数の単純なパラメータで記述可能で、データが単純な形式でイメージ・ファイル内に配置されている、一部の外部イメージの読取りをサポートしています。サポートしているフォーマットは多数あり、頻繁に変わるため、フォーマットのリストは示しません。かわりに、Oracle Multimediaの外部イメージ・サポートを使用してイメージを読み取れるかどうかを判断するための簡単なガイドラインがあります。その規則の概要を、後続の項に示します。

ヘッダー

外部イメージでは、その長さが4,294,967,265バイトを超えないかぎり、任意のフォーマットで任意のヘッダーを指定できます(ヘッダーなしでもかまいません)。前述のとおり、このヘッダーのすべての情報は無視されます。

イメージの幅

最大32,767ピクセルの幅の外部イメージがサポートされています。

イメージの高さ

最大32,767ピクセルの高さの外部イメージがサポートされています。

圧縮タイプ

外部イメージは、圧縮されていないか、またはCCITT FAX Group 3またはFAX Group 4を使用して圧縮されている必要があります。ランレングス・エンコーディングなどのその他の圧縮方式は、現在はサポートしていません。

ピクセル順序

ピクセルを左から右、または右から左に格納する外部イメージがサポートされています。犂耕型順序付けなどのその他のピクセル順序方式は、現在はサポートしていません。

走査線順序

上端が先頭か、または下端が先頭の走査線順序の外部イメージがサポートされています。イメージ表示で隣接する走査線は、イメージ記憶域内でも隣接している必要があります。一部のイメージ・フォーマットでは、イメージの走査線が交互に配置されるため、たとえば、走査線の1、5、9などが隣接し、次に2、6、10などが隣接することになります。これは現在サポートされていません。

インターリーブ

外部イメージは、BIP、BILまたはBSQインターリーブを使用する必要があります。他のデータ・バンドの配列は許可されず、ピクセル、走査線またはバンドレベルのブロック化や埋込みをバンドで使用することもできません。

バンド数

最大255のデータ・バンドを持つ外部イメージがサポートされています。データのバンド数が256以上の場合、イメージのインターリーブが順次バンドのときは最初の255バンドにアクセスできます。順次バンドの場合、256以降のデータ・バンドは、アクセス可能なバンドの後に配置され、最初の255バンドのレイアウトには影響しません。その他のインターリーブ・タイプのイメージでは、256以降のバンドによってビットマップ・データのレイアウトが変更されるため、255を超えるバンドを含めることはできません。

トレーラ

外部イメージは、ビットマップ・データの後に、任意の長さのイメージ・トレーラを含むことができます。ただし、その情報はOracle Multimediaに無視されるため、トレーラの存在や長さを指定する必要はなく、また指定する方法もありません。

そのようなトレーラを持つイメージをprocess( )メソッドまたはprocessCopy( )メソッドによって変更した場合、結果イメージにはそのトレーラが含まれません。processCopy( )メソッドを使用した場合、ソース・イメージは元の状態のままになります。