この付録では、Oracleロー・ピクセル・イメージ・フォーマットについて説明します。この付録は、サポートされていないイメージ・フォーマットをOracle Multimediaにインポートしたり、イメージ内のピクセル・データに直接アクセスするためにロー・ピクセル・フォーマットを使用する開発者および上級ユーザーを対象としています。
この付録の大部分の説明は、外部イメージにも該当します。
この付録では、次の項目について説明します。
Oracle Multimediaは、アートワーク、写真などのイメージを圧縮して効率的に格納するのに適した多くの一般的なフォーマットをサポートし、これらのフォーマット間での変換機能を提供します。ただし、これらのフォーマットの多くにはある程度の独自性があり、そのコンテンツのフォーマットは大きく異なっている場合が多いため、イメージのピクセル・データへのアクセスが困難な場合があります。
ロー・ピクセル・フォーマットは、圧縮されたデータ・ストリーム内のピクセルの位置を判断するために必要な複雑な計算を行わずに、ピクセル・データに直接アクセスする必要があるアプリケーションに有効です。このフォーマットによって、フィルタ処理やエッジ検出などのピクセル指向のイメージ処理を実行しているアプリケーションで、簡単にイメージを読み取ることができるようになります。このフォーマットは、元のイメージにデータを書き込む必要があるアプリケーションでさらに有効です。イメージが圧縮されている場合、イメージ内の1つのピクセルを変更するのみでもイメージ・ストリーム全体に影響を与える可能性があります。非圧縮フォーマットを使用すると、アプリケーションによってピクセル・データを直接書き込み、その後、1つのprocess( )コマンドによってイメージを圧縮することができます。
このフォーマットは、Oracle Multimediaで直接サポートされていない、単純な非圧縮フォーマットのデータを使用する場合にも有効です。この場合、データにロー・ピクセル識別子およびヘッダーを付加して、Oracle Multimediaにインポートできます。これらのイメージの読取りのみが必要な場合(インポートや変換など)のために、この機能は「外部イメージ・サポート」としてOracle Multimediaに組み込まれています。この機能とロー・ピクセル・フォーマットとの関連は、E.10項を参照してください。
ロー・ピクセル・フォーマットでは、Oracle Multimediaに組み込まれていないイメージ・タイプのサポートに加えて、衛星イメージなどのNバンド・イメージの解釈も可能です。ロー・ピクセルを使用すると、別のイメージ・フォーマットへの変換中にNバンド・イメージのバンドを1つまたは3つ選択し、Nバンド・イメージをサポートしないプログラム内で簡単に視覚化することができます。ロー・ピクセル・フォーマットで作成されたイメージのバンドは1つまたは3つのみであることに注意してください。
ロー・ピクセル・フォーマットの現行バージョンは1.0です。この付録の説明は、このバージョンのロー・ピクセル・イメージのみに該当します。他のバージョンでは、フォーマットの詳細が変更される場合があります。
ロー・ピクセル・イメージは、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(ゼロ)にする必要があります。 |
この項では、ロー・ピクセル・ヘッダーの各フィールドの詳細を説明します。
イメージ識別子
ロー・ピクセル・イメージの先頭の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(ゼロ)になります。
イメージの幅
このフィールドには40億ピクセルを超えるイメージ寸法を格納可能ですが、Oracle Multimediaの内部制限のため、1から32767の範囲内の値を指定する必要があります。このフィールドは、ビッグ・エンディアン・バイト順序で格納されます。
イメージの高さ
このフィールドには40億ピクセルを超えるイメージ寸法を格納可能ですが、Oracle Multimediaの内部制限のため、1から32767の範囲内の値を指定する必要があります。このフィールドは、ビッグ・エンディアン・バイト順序で格納されます。
圧縮タイプ
このフィールドには、ロー・ピクセル・イメージの圧縮タイプが含まれます。このフィールドには、次の値を指定できます。
値 | 名前 | 圧縮 |
---|---|---|
1 | NONE | 圧縮なし |
2 | FAX3 | CCITT Group 3圧縮 |
3 | FAX4 | CCITT Group 4圧縮 |
グレースケール、RGBおよびNバンド・イメージの場合、イメージは常に圧縮されないため、値は0(ゼロ)のみが有効です。圧縮タイプの値が1または2の場合、イメージはモノクロであるとみなされます。この場合、イメージにはバンドが1つのみ含まれているとみなされるため、ピクセル順序にNORMAL、走査線順序にNORMAL、インターリーブにBIPを指定する必要があります。
ピクセル順序
このフィールドは、ロー・ピクセル・イメージ内のピクセル順序を示します。通常、走査線内のピクセルは、従来の正のx軸に沿って左から右に順序付けされます。ただし、一部のアプリケーションでは、走査線を右から左に順序付けする必要があります。
このフィールドには、次の値を指定できます。
値 | 名前 | ピクセル順序 |
---|---|---|
1 | NORMAL | 左端のピクセルが先頭 |
2 | REVERSE | 右端のピクセルが先頭 |
このフィールドには0(ゼロ)は指定できません。0を指定すると、ピクセル順序が指定されていないことになり、イメージを解析できません。CCITT G3およびCCITT G4圧縮タイプのイメージの場合、このフィールドの値に1を指定する必要があります。
走査線順序
このフィールドは、ロー・ピクセル・イメージ内の走査線順序を示します。通常、イメージ内の走査線は上から下に順序付けされます。ただし、一部のアプリケーションでは、走査線を下から上に順序付けする必要があります。
このフィールドには、次の値を指定できます。
値 | 名前 | 走査線順序 |
---|---|---|
1 | NORMAL | 上端の走査線が先頭 |
2 | INVERSE | 下端の走査線が先頭 |
このフィールドには0(ゼロ)は指定できません。0を指定すると、走査線順序が指定されていないことになり、イメージを解析できません。CCITT G3およびCCITT G4圧縮タイプのイメージの場合、このフィールドの値に1を指定する必要があります。
インターリーブ
このフィールドは、ロー・ピクセル・イメージ内の様々なバンドのインターリーブを示します。様々なインターリーブ・オプションの詳細は、E.5.3項を参照してください。
このフィールドには、次の値を指定できます。
値 | 名前 | インターリーブ |
---|---|---|
1 | BIP | ピクセル単位のバンドのインターリーブ(チャンク方式) |
2 | BIL | ライン単位のバンドのインターリーブ |
3 | BSQ | 順次バンド(プレーナ方式) |
このフィールドには0(ゼロ)は指定できません。0を指定すると、インターリーブが指定されていないことになり、イメージを解析できません。CCITT G3およびCCITT 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にしない場合、予期しない結果になる場合があります。
バージョン1.0のロー・ピクセル・イメージには、イメージ識別子およびイメージ・ヘッダー以外に、実際のピクセル・データの前にオプションのポスト・ヘッダー・ギャップを含めることができます。イメージ・ヘッダーの予約領域とは異なり、このギャップ内のバイトには任意の値を指定できます。これは、イメージに関する追加のメタデータを格納する場合に役立ちます。たとえば、元のファイル・フォーマットの実際のイメージ・ヘッダーなどを格納できます。
ただし、このギャップに格納される情報に対する基準はないため、この領域にメタデータを格納する場合は、他のユーザーがそのデータに対して異なる解釈をする可能性があることに注意してください。また、ロー・ピクセル・イメージが処理されるときに、このギャップに格納された情報が宛先イメージにコピーされないことに注意してください。入力と同じ位置に出力を書き込むprocess( )メソッドでは、この処理が実行されたトランザクションをロールバックしないかぎり、ソース情報が消失します。
ロー・ピクセル・イメージのデータ・セクションには、イメージの実際のピクセル・データが格納されます。この領域は、ビットマップ・データと呼ばれることがあります。この項では、ビットマップ・データのレイアウトについて説明します。
CCITT圧縮を使用したイメージの場合、ビットマップ・データ領域には、追加ヘッダーなしのローCCITTストリームが格納されます。この項の後続の説明は、非圧縮イメージのみに該当します。
ロー・ピクセル・イメージ内のビットマップ・データは、プレーン当たり(ピクセル当たり)8ビット、直接色のパック・データとして格納されます。ピクセル、走査線またはバンドのブロック化や埋込みはありません。走査線の先頭は、上端か下端のいずれかに設定できます。走査線内で、ピクセルの先頭を左端か右端のいずれかにして順序付けできます。これらのすべてのオプションは、比較的単純な方法でインターリーブに影響を受けます。例については、後続の項を参照してください。
1111111111… 2222222222… 3333333333… 4444444444…
各桁は1つのピクセルを表し、桁の値はそのピクセルが存在する走査線を示しています。
通常、ピクセルの上部または上端の行を構成する走査線は、下部の走査線より前に、イメージ・データ・ストリーム内に格納されます。前述のイメージは、ビットマップ・データ・ストリームでは次のような形式になります。
…1111111111…2222222222…3333333333…4444444444…
先頭の走査線が他の走査線より先にあることに注意してください。ロー・ピクセル・フォーマットでは、この走査線の順序付けをNORMALと呼びます。
ただし、一部のアプリケーションでは、次のとおり下端の走査線がデータ・ストリームの先頭になる方が適している場合があります。
…4444444444…3333333333…2222222222…1111111111…
ロー・ピクセル・フォーマットでは、この走査線の順序付けをINVERSEと呼びます。
画面上に、あるイメージの走査線が次のように表示されるとします。
…123456789…
各桁は1つのピクセルを表し、桁の値はそのピクセルが存在する列を示しています。
通常、左端のピクセルを構成するデータは、右側のピクセルより前に、イメージ・データ・ストリーム内に格納されます。前述の走査線は、ビットマップ・データ・ストリームでは次のような形式になります。
…123456789…
左のピクセルが他のピクセルより先にあることに注意してください。ロー・ピクセル・フォーマットでは、このピクセルの順序付けをNORMALと呼びます。
ただし、一部のアプリケーションでは、次のとおり右端のピクセルがデータ・ストリームの先頭になる方が適している場合があります。
…987654321…
ロー・ピクセル・フォーマットでは、このピクセルの順序付けをREVERSEと呼びます。
バンド・インターリーブは、イメージ・バッファ内における、ピクセル・データの個々のバンドの相対位置を示します。
バンドは、イメージ・データ・ストリームに出現する順に、先頭のバンドを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) …
ロー・ピクセル・フォーマットでは、イメージ内で最大255のデータ・バンドがサポートされています。イメージ内のデータ・バンドの相対位置については、3種類のデータ・バンドのインターリーブの例を示したE.5.3項を参照してください。
単一バンドのデータの場合、インターリーブがないため、3つの方式はすべて同じになります。その他のバンド数のインターリーブの例を、次の表に示します。例で使用するすべてのイメージには、3つの走査線および4つの列が存在します。各ピクセルの各バンドは、1桁のバンド番号で表されます。カッコで囲まれていない標準テキストの番号はイメージの1つ目の走査線を示し、丸カッコで囲まれたイタリック体の番号はイメージの2つ目の走査線を示し、大カッコ([ ])で囲まれた太字の番号はイメージの3つ目の走査線を示します。
バンド数 | 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] |
次の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 */ };
次の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は、単一バンド・イメージの緑チャネルおよび青チャネルに使用されます。
次のPL/SQL定数では、ロー・ピクセル情報に使用する値を定義します。これらの定数は、RPIXイメージ識別子の長さにRPIXヘッダーの長さを足した値を示します。
CREATE OR REPLACE PACKAGE ORDImageConstants AS RPIX_HEADER_LENGTH_1_0 CONSTANT INTEGER := 34; END ORDImageConstants;
ロー・ピクセル・フォーマットは通常は非圧縮の直接色イメージに使用しますが、CCITT FAX Group 3またはFAX Group 4圧縮を使用したモノクロ・イメージの格納もサポートしています。これは、ドキュメント管理アプリケーションなどで、白黒ページをスキャンして格納する場合に役立ちます。これらのイメージは、通常、グレースケールとして格納しても実用的ではありません。これらのイメージに使用された高解像度に伴う未使用のデータ・ビットによって、ディスク領域が大量に必要になるためです。
CCITT圧縮を使用したロー・ピクセル・イメージは、標準のロー・ピクセル・イメージとして処理されます。この場合、次の条件を満たしている必要があります。
圧縮タイプ・フィールドの値が、E.3項に示すとおり、1または2(FAX3またはFAX4)である。
ピクセル順序フィールドの値が1(NORMALピクセル順序)である。
走査線順序フィールドの値が1(NORMAL走査線順序)である。
インターリーブ・フィールドの値が1(BIPインターリーブ)である。
バンド数フィールドの値が1(1バンド)である。
赤チャネル番号フィールドの値が1である。
緑チャネル番号フィールドおよび青チャネル番号フィールドの値が0(ゼロ)(バンドなし)である。
これらの条件に加えて、ピクセル・データに直接アクセスするアプリケーションでは、CCITTフォーマットのデータの読取りと書込みの方法を使用可能である必要があります。
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( )メソッドを使用した場合、ソース・イメージは元の状態のままになります。