5 Oracle Multimedia ORD_IMAGE PL/SQLパッケージ

Oracle Multimediaでは、ORD_IMAGE PL/SQLパッケージが提供されます。このパッケージには、一般的な操作(オペレーティング・システム・ファイルを対象とするイメージ・データのインポートおよびエクスポート、イメージ・データを対象とするメタデータの抽出および書込み、縮小イメージの生成、イメージ・データのフォーマットの変換など)を実行するためのファンクションおよびプロシージャが含まれます。

このパッケージにより、BLOBおよびBFILEに格納されているイメージ・データにOracle Multimediaサポートが追加されます。

ORD_IMAGEパッケージは、ordirpsp.sqlファイルに定義されています。インストール後、このファイルは次のOracleホーム・ディレクトリに格納されています。

<ORACLE_HOME>/ord/im/admin (LinuxおよびUNIXの場合)

<ORACLE_HOME>\ord\im\admin (Windowsの場合)

これらのトピックの例では、TIMG表およびIMAGEDIRディレクトリが存在すると仮定します。

ORD_IMAGE PL/SQLパッケージのファンクションおよびプロシージャの詳細は、次のトピックを参照してください。

関連項目:

5.1 ORD_IMAGE PL/SQLパッケージ: BFILEのgetMetadata( )

構文

getMetadata(imageBfile   IN BFILE, 
            metadataType IN VARCHAR2 DEFAULT ‘ALL’) RETURN SYS.XMLSequenceType;

説明

指定したタイプのメタデータをBFILEに格納されたイメージ・データから抽出し、スキーマが妥当なXML文書の配列を戻します。一致するメタデータが検出されなかった場合は、空の配列が戻されます。

パラメータ

imageBfile

BFILEで格納されるイメージ・データを指定します。

metadataType

抽出する埋込みメタデータのタイプを指定する文字列です。有効な値は、ALL、ORDIMAGE、XMP、EXIFおよびIPTC-IIMです。デフォルト値はALLです。

使用上の注意

入力パラメータmetadataTypeの値がALLで、2つ以上のタイプのサポートされるメタデータがイメージに存在する場合、このファンクションは複数のXML文書(検出されたメタデータのタイプごとに1つ)を戻します。入力パラメータの値が他の値の場合、このファンクションは0(ゼロ)または1つのXML文書を戻します。

各文書は、XMLTypeのインスタンスとして格納され、いずれかのメタデータ・スキーマに基づいていてます。XQuery関数のfn:namespace-uriを使用して、その文書に示されているメタデータのタイプを判別します。

サポートされるメタデータ・スキーマの詳細は、「Oracle MultimediaメタデータXMLスキーマ」を参照してください。

関連項目:

プラグマ

なし。

例外

ORDImageExceptions.NULL_CONTENT

この例外は、imageBfileパラメータがNULLの場合に発生します。

埋込みメタデータをimageBfileから抽出し、スキーマが妥当なXML文書の配列を戻します。

DECLARE
   imageBfile BFILE := BFILENAME('IMAGEDIR','testimg.jpg');
   metav XMLSequenceType;
   ns varchar2(4000);
BEGIN

   -- get metadata from bfile
   metav := ORDSYS.ORD_IMAGE.getMetadata(imageBfile, 'ALL');

   -- print the namespace of each metadata document
   FOR i IN 1..metav.count LOOP
        SELECT xmlcast(xmlquery('fn:namespace-uri($x/*)'
            PASSING metav(i) AS "x" RETURNING content) AS varchar2(4000))
            INTO ns FROM dual;
        DBMS_OUTPUT.PUT_LINE('namespace: ' || ns);
   END LOOP;

EXCEPTION
   WHEN ORDSYS.ORDImageExceptions.NULL_CONTENT THEN
        DBMS_OUTPUT.PUT_LINE('imageBfile is null');
   WHEN OTHERS THEN
        RAISE;
END;
/

5.2 ORD_IMAGE PL/SQLパッケージ: BLOBのgetMetadata( )

構文

getMetadata(imageBlob    IN BLOB, 
            metadataType IN VARCHAR2 DEFAULT ‘ALL’) RETURN SYS.XMLSequenceType;

説明

指定したタイプのメタデータをBLOBに格納されたイメージ・データから抽出し、スキーマが妥当なXML文書の配列を戻します。一致するメタデータが検出されなかった場合は、空の配列が戻されます。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

metadataType

抽出する埋込みメタデータのタイプを指定する文字列です。有効な値は、ALL、ORDIMAGE、XMP、EXIFおよびIPTC-IIMです。デフォルト値はALLです。

使用上の注意

入力パラメータmetadataTypeの値がALLで、2つ以上のタイプのサポートされるメタデータがイメージに存在する場合、このファンクションは複数のXML文書(検出されたメタデータのタイプごとに1つ)を戻します。入力パラメータの値が他の値の場合、このファンクションは0(ゼロ)または1つのXML文書を戻します。

各文書は、XMLTypeのインスタンスとして格納され、いずれかのメタデータ・スキーマに基づいていてます。XQuery関数のfn:namespace-uriを使用して、その文書に示されているメタデータのタイプを判別します。

サポートされるメタデータ・スキーマの詳細は、「Oracle MultimediaメタデータXMLスキーマ」を参照してください。

関連項目:

プラグマ

なし。

例外

ORDImageExceptions.NULL_CONTENT

この例外は、imageBlobパラメータがNULLの場合に発生します。

埋込みメタデータをimageBlobから抽出し、スキーマが妥当なXML文書の配列を戻します。

DECLARE
   imageBlob BLOB;
   metav XMLSequenceType;
   ns varchar2(4000);
BEGIN

   SELECT img INTO imageBlob FROM timg WHERE N=1910;

   -- get metadata from blob
   metav:=ORDSYS.ORD_IMAGE.getMetadata(imageBlob, 'ALL');

   -- print the namespace of each metadata document
   FOR i IN 1..metav.count LOOP
        SELECT xmlcast(xmlquery('fn:namespace-uri($x/*)'
            PASSING metav(i) AS "x" RETURNING content) AS varchar2(4000))
            INTO ns FROM dual;
        DBMS_OUTPUT.PUT_LINE('namespace: ' || ns);
   END LOOP;

EXCEPTION
   WHEN ORDSYS.ORDImageExceptions.NULL_CONTENT THEN
        DBMS_OUTPUT.PUT_LINE('imageBlob is null');
   WHEN OTHERS THEN
        RAISE;
END;
/

5.3 ORD_IMAGE PL/SQLパッケージ: BFILEイメージのapplyWatermark( )

構文

applyWatermark(imageBfile           IN OUT NOCOPY BFILE, 
               added_image          IN OUT NOCOPY BFILE, 
               dest                 IN OUT NOCOPY BLOB, 
               logging              OUT VARCHAR2, 
               watermark_properties IN ordsys.ord_str_list default null);

説明

イメージ・ウォーターマークをBFILEに格納されたソース・イメージに重ねて配置し、宛先BLOBに書き込みます。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

added_image

ソース・イメージに追加するBFILEに格納されたウォーターマーク・イメージです。

dest

ウォーターマーク・イメージの宛先BLOBです。

logging

ウォーターマークの設定操作中に発生した予期しない動作に関する情報を含む文字列です。操作に成功した場合、空の文字列が戻されます。それ以外の場合、このプロシージャは、予期しない動作を記述した文字列を戻します。

watermark_properties

ウォーターマーク・イメージの属性(width、height、position、position_x、position_y、transparencyなど)を定義した名前/値ペアの文字列リストです。

使用上の注意

このプロシージャをコールすると、ソースBFILEから宛先BLOBへイメージが処理されます。

ウォーターマークの設定操作およびウォーターマーク・プロパティの詳細は、「ウォーターマークの設定操作」を参照してください。

プラグマ

なし。

例外

ORDImageExceptions.NULL_CONTENT

この例外は、ソース・イメージまたは追加されたイメージがNULLの場合に発生します。

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージBLOBがNULLの場合に発生します。

ウォーターマーク・イメージをイメージBFILEに追加します。

-- add image as watermark for BFILE

DECLARE
   source_image BFILE:=BFILENAME('IMAGEDIR','testimg.jpg');
   added_image BFILE:=BFILENAME('IMAGEDIR','testlogo.png');
   dest_image BLOB;
   prop ordsys.ord_str_list;
   logging VARCHAR2(2000);
BEGIN
   SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;

   -- specify properties
   prop:=ordsys.ord_str_list(
        'position=bottomright',
        'transparency=0.2');

   -- add image watermark to source image
   ORDSYS.ORD_IMAGE.applyWatermark(source_image, added_image, dest_image, 
        logging, prop);

   UPDATE timg SET img=dest_image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.4 ORD_IMAGE PL/SQLパッケージ: BLOBイメージのapplyWatermark( )

構文

applyWatermark(imageBlob            IN BLOB, 
               added_image          IN BLOB, 
               dest                 IN OUT NOCOPY BLOB, 
               logging              OUT VARCHAR2, 
               watermark_properties IN ordsys.ord_str_list default null);

説明

イメージ・ウォーターマークをBLOBに格納されたソース・イメージに重ねて配置し、宛先BLOBに書き込みます。

パラメータ

imageBlob

BLOBで格納されるソース・イメージ・データを指定します。

added_image

ソース・イメージに追加するBLOBに格納されたウォーターマーク・イメージです。

dest

ウォーターマーク・イメージの宛先BLOBです。

logging

ウォーターマークの設定操作中に発生した予期しない動作に関する情報を含む文字列です。操作に成功した場合、空の文字列が戻されます。それ以外の場合、このプロシージャは、予期しない動作を記述した文字列を戻します。

watermark_properties

ウォーターマーク・イメージの属性(width、height、position、position_x、position_y、transparencyなど)を定義した名前/値ペアの文字列リストです。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

このプロシージャをコールすると、ソースBLOBから宛先BLOBへイメージが処理されます。

ウォーターマークの設定操作およびウォーターマーク・プロパティの詳細は、「ウォーターマークの設定操作」を参照してください。

プラグマ

なし。

例外

ORDImageExceptions.NULL_CONTENT

この例外は、ソース・イメージまたは追加されたイメージがNULLの場合に発生します。

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージBLOBがNULLの場合に発生します。

ウォーターマーク・イメージをイメージBLOBに追加します。

-- add image as watermark for BLOB

DECLARE
   source_image BLOB;
   added_image BLOB;
   dest_image BLOB;
   prop ordsys.ord_str_list;
   logging VARCHAR2(2000);
BEGIN
   SELECT img INTO source_image FROM timg WHERE N=1910;
   SELECT img INTO added_image FROM timg WHERE N=1940;
   SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;

   -- specify properties
   prop:=ordsys.ord_str_list(
        'position=bottomright',
        'transparency=0.2');

   -- add image watermark to source image
   ORDSYS.ORD_IMAGE.applyWatermark(source_image, added_image, dest_image,
       logging, prop);

   UPDATE timg SET img=dest_image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.5 ORD_IMAGE PL/SQLパッケージ: BFILEテキストのapplyWatermark( )

構文

applyWatermark(imageBfile           IN OUT NOCOPY BFILE, 
               added_text           IN VARCHAR2, 
               dest                 IN OUT NOCOPY BLOB, 
               logging              OUT VARCHAR2, 
               watermark_properties IN ordsys.ord_str_list default null);

説明

テキスト・ウォーターマークをBFILEに格納されたソース・イメージに重ねて配置し、宛先BLOBに書き込みます。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

added_text

ソース・イメージに追加する文字列に格納されたウォーターマーク・テキストです。

dest

ウォーターマーク・イメージの宛先BLOBです。

logging

ウォーターマークの設定操作中に発生した予期しない動作に関する情報を含む文字列です。操作に成功した場合、空の文字列が戻されます。それ以外の場合、このプロシージャは、予期しない動作を記述した文字列を戻します。たとえば、ウォーターマーク・テキストが長すぎて切り捨てられる場合、「警告: テキストは長すぎるため切り捨てられます」という文字列が戻されます。

watermark_properties

ウォーターマーク・テキストの属性(font_name、font_style、font_size、text_color、position_x、position_y、transparencyなど)を定義した名前/値ペアの文字列リストです。

使用上の注意

このプロシージャをコールすると、ソースBFILEから宛先BLOBへイメージが処理されます。

ウォーターマークの設定操作およびウォーターマーク・プロパティの詳細は、「ウォーターマークの設定操作」を参照してください。

プラグマ

なし。

例外

ORDImageExceptions.NULL_CONTENT

この例外は、ソース・イメージがNULLの場合に発生します。

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージBLOBがNULLの場合に発生します。

ウォーターマーク・テキストをイメージBFILEに追加します。

-- add text as watermark for BFILE

DECLARE
   source_image BFILE:=BFILENAME('IMAGEDIR','testimg.jpg');
   added_text varchar2(200);
   dest_image BLOB;
   prop ordsys.ord_str_list;
   logging VARCHAR2(2000);
BEGIN
   SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;

   added_text:='Oracle Multimedia @ 2016';

   -- specify properties
   prop:=ordsys.ord_str_list(
        'font_name=Times New Roman',
        'font_style=bold',
        'font_size=50',
        'text_color=red',
        'position_x=100',
        'position_y=100',
        'transparency=0.6');

   -- add text watermark to source image
   ORDSYS.ORD_IMAGE.applyWatermark(source_image, added_text, dest_image,
        logging, prop);

   UPDATE timg SET img=dest_image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.6 ORD_IMAGE PL/SQLパッケージ: BLOBテキストのapplyWatermark( )

構文

applyWatermark(imageBlob            IN BLOB, 
               added_text           IN VARCHAR2, 
               dest                 IN OUT NOCOPY BLOB, 
               logging              OUT VARCHAR2, 
               watermark_properties IN ordsys.ord_str_list default null);

説明

テキスト・ウォーターマークをBLOBに格納されたソース・イメージに重ねて配置し、宛先BLOBに書き込みます。

パラメータ

imageBlob

BLOBで格納されるソース・イメージ・データを指定します。

added_image

ソース・イメージに追加する文字列に格納されたウォーターマーク・テキストです。

dest

ウォーターマーク・イメージの宛先BLOBです。

logging

ウォーターマークの設定操作中に発生した予期しない動作に関する情報を含む文字列です。操作に成功した場合、空の文字列が戻されます。それ以外の場合、このプロシージャは、予期しない動作を記述した文字列を戻します。たとえば、ウォーターマーク・テキストが長すぎて切り捨てられる場合、「警告: テキストは長すぎるため切り捨てられます」という文字列が戻されます。

watermark_properties

ウォーターマーク・テキストの属性(font_name、font_style、font_size、text_color、position_x、position_y、transparencyなど)を定義した名前/値ペアの文字列リストです。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

このメソッドをコールすると、ソースBLOBから宛先BLOBへイメージが処理されます。

ウォーターマークの設定操作およびウォーターマーク・プロパティの詳細は、「ウォーターマークの設定操作」を参照してください。

プラグマ

なし。

例外

ORDImageExceptions.NULL_CONTENT

この例外は、ソース・イメージがNULLの場合に発生します。

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージBLOBがNULLの場合に発生します。

ウォーターマーク・テキストをイメージBLOBに追加します。

-- add text as watermark for BLOB

DECLARE
   source_image BLOB;
   added_text varchar2(200);
   dest_image BLOB;
   prop ordsys.ord_str_list;
   logging VARCHAR2(2000);
BEGIN
   SELECT img INTO source_image FROM timg WHERE N=1910;
   SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;

   added_text:='Oracle Multimedia @ 2016';

   -- specify properties
   prop := ordsys.ord_str_list(
        'font_name=Times New Roman',
        'font_style=bold',
        'font_size=50',
        'text_color=red',
        'position_x=100',
        'position_y=100',
        'transparency=0.6');

   -- add text watermark to source image
   ORDSYS.ORD_IMAGE.applyWatermark(source_image, added_text, dest_image,
        logging, prop);

   UPDATE timg SET img=dest_image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.7 ORD_IMAGE PL/SQLパッケージ: BFILEのconvert( )

構文

convert(imageBfile IN OUT NOCOPY BFILE, 
        fileFormat IN VARCHAR2, 
        dest       IN OUT NOCOPY BLOB);

説明

ソース・イメージを指定されたファイル・フォーマットのイメージに変換して、BFILEに格納されたソース・イメージから派生イメージを作成し、結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

fileFormat

結果イメージのファイル・フォーマットです。

dest

新しいイメージのコピー先を指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージBLOBがNULLの場合に発生します。

ORDImageExceptions.NULL_LOCAL_DATA

この例外は、imageBfileパラメータがNULLの場合に発生します。

イメージを別のフォーマットに変換します。

DECLARE
   source_image BFILE:=BFILENAME('IMAGEDIR','testimg.jpg');
   dest_image BLOB;
BEGIN
   SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
   -- convert source image to PNG
   ORDSYS.ORD_IMAGE.convert(source_image, 'PNG', dest_image);

   UPDATE timg SET img=dest_image WHERE N=2402;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.8 ORD_IMAGE PL/SQLパッケージ: BLOBのconvert( )

構文

convert(imageBlob  IN BLOB, 
        fileFormat IN VARCHAR2, 
        dest       IN OUT NOCOPY BLOB);

説明

ソース・イメージを指定されたファイル・フォーマットのイメージに変換して、BLOBに格納されたソース・イメージから派生イメージを作成し、結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

fileFormat

結果イメージのファイル・フォーマットです。

dest

新しいイメージのコピー先を指定します。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

イメージを別のフォーマットに変換します。

DECLARE
   source_image BLOB;
   dest_image BLOB;
BEGIN
   SELECT img INTO source_image FROM timg WHERE N=1910;
   SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
   -- convert source image to PNG
   ORDSYS.ORD_IMAGE.convert(source_image, 'PNG', dest_image);

   UPDATE timg SET img=dest_image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.9 ORD_IMAGE PL/SQLパッケージ: インプレースのconvert( )

構文

convert(imageBlob  IN OUT NOCOPY BLOB, 
        fileFormat IN VARCHAR2);

説明

イメージを指定されたファイル・フォーマットに変換し、イメージを上書きします。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

fileFormat

結果イメージのファイル・フォーマットです。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

イメージを別のフォーマットに変換します。

DECLARE
   image BLOB;
BEGIN
   SELECT img INTO image FROM timg WHERE N=2402 FOR UPDATE;
   
   -- convert image to JFIF and update in place
   ORDSYS.ORD_IMAGE.convert(image, 'JFIF');

   UPDATE timg SET img=image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.10 ORD_IMAGE PL/SQLパッケージ: BFILEのcrop( )

構文

crop(imageBfile IN OUT NOCOPY BFILE, 
     originX    IN INTEGER, 
     originY    IN INTEGER, 
     width      IN INTEGER, 
     height     IN INTEGER, 
     dest       IN OUT NOCOPY BLOB);

説明

ソース・イメージを切り取って、BFILEに格納されたソース・イメージから派生イメージを作成し、結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBfile

BFILEで格納されるイメージ・データを指定します。

originX

元のX座標のピクセル値です。最初のピクセル値は0 (ゼロ)です。

originY

元のY座標のピクセル値です。最初のピクセル値は0 (ゼロ)です。

width

切取りイメージのピクセル単位の幅です。

height

切取りイメージのピクセル単位の高さです。

dest

新しいイメージのコピー先を指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージBLOBがNULLの場合に発生します。

ORDImageExceptions.NULL_LOCAL_DATA

この例外は、imageBfileパラメータがNULLの場合に発生します。

ソース・イメージから新しいイメージを作成して切り取ります。

DECLARE
   source_image BFILE := BFILENAME('IMAGEDIR','testimg.jpg');
   dest_image BLOB;
BEGIN
   SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;

   -- crop image from x1=0,y1=0 with width=20,heigth=20
   ORDSYS.ORD_IMAGE.crop(source_image, 0,0,20,20, dest_image);

   UPDATE timg SET img=dest_image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.11 ORD_IMAGE PL/SQLパッケージ: BLOBのcrop( )

構文

crop(imageBlob IN BLOB, 
     originX   IN INTEGER, 
     originY   IN INTEGER, 
     width     IN INTEGER, 
     height    IN INTEGER, 
     dest      IN OUT NOCOPY BLOB);

説明

ソース・イメージを切り取って、BLOBに格納されたソース・イメージから派生イメージを作成し、結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

originX

元のX座標のピクセル値です。最初のピクセル値は0 (ゼロ)です。

originY

元のY座標のピクセル値です。最初のピクセル値は0 (ゼロ)です。

width

切取りイメージのピクセル単位の幅です。

height

切取りイメージのピクセル単位の高さです。

dest

新しいイメージのコピー先を指定します。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

ソース・イメージから新しいイメージを作成して切り取ります。

DECLARE
   source_image BLOB;
   dest_image BLOB;
BEGIN
   SELECT img INTO source_image FROM timg WHERE N=1910;
   SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;

   -- crop image from x1=0,y1=0 with width=20,height=20
   ORDSYS.ORD_IMAGE.crop(source_image, 0,0,20,20, dest_image);

   UPDATE timg SET img=dest_image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.12 ORD_IMAGE PL/SQLパッケージ: インプレースのcrop( )

構文

crop(imageBlob IN OUT NOCOPY BLOB, 
     originX   IN INTEGER, 
     originY   IN INTEGER, 
     width     IN INTEGER, 
     height    IN INTEGER);

説明

imageBlobのイメージから切り取るウィンドウを定義し、切り取ったイメージで上書きします。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

originX

元のX座標のピクセル値です。最初のピクセル値は0 (ゼロ)です。

originY

元のY座標のピクセル値です。最初のピクセル値は0 (ゼロ)です。

width

切取りイメージのピクセル単位の幅です。

height

切取りイメージのピクセル単位の高さです。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

新しいイメージを作成して切り取ります。

DECLARE
   image BLOB;
BEGIN
   SELECT img INTO image FROM timg WHERE N=2402 FOR UPDATE;
   
   -- crop image from x1=0,y1=0 with width=20,height=20
   ORDSYS.ORD_IMAGE.crop(image, 0,0,20,20);

   UPDATE timg SET img=image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.13 ORD_IMAGE PL/SQLパッケージ: BFILEのflip( )

構文

flip(imageBfile IN OUT NOCOPY BFILE, 
     dest       IN OUT NOCOPY BLOB);

説明

ソース・イメージの走査線を逆(下から上)に順序付けし、結果イメージを宛先BLOBに書き込みます。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

dest

新しいイメージのコピー先を指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージがNULLの場合に発生します。

ORDImageExceptions.NULL_LOCAL_DATA

この例外は、imageBfileパラメータがNULLの場合に発生します。

イメージの上下を反転します。

DECLARE
   source_image BFILE:=BFILENAME('IMAGEDIR','testimg.jpg');
   dest_image BLOB;
BEGIN
   SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
   -- flip image
   ORDSYS.ORD_IMAGE.flip(source_image, dest_image);

   UPDATE timg SET img=dest_image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.14 ORD_IMAGE PL/SQLパッケージ: BLOBのflip( )

構文

flip(imageBlob IN BLOB, 
     dest      IN OUT NOCOPY BLOB);

説明

イメージの走査線を逆(下から上)に順序付けし、結果イメージを宛先BLOBに書き込みます。

パラメータ

imageBlob

BLOBで格納されるソース・イメージ・データを指定します。

dest

新しいイメージのコピー先を指定します。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

イメージの上下を反転します。

DECLARE
   source_image BLOB;
   dest_image BLOB;
BEGIN
   SELECT img INTO source_image FROM timg WHERE N=1910;
   SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
   -- flip image
   ORDSYS.ORD_IMAGE.flip(source_image, dest_image);

   UPDATE timg SET img=dest_image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.15 ORD_IMAGE PL/SQLパッケージ: インプレースのflip( )

構文

flip(imageBlob IN OUT NOCOPY BLOB);

説明

イメージの走査線を逆(下から上)に順序付けし、イメージを上書きします。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

イメージの上下を反転します。

DECLARE
   image BLOB;
BEGIN
   SELECT img INTO image FROM timg WHERE N=2402 FOR UPDATE;
   
   -- flip image
   ORDSYS.ORD_IMAGE.flip(image);

   UPDATE timg SET img = image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.16 ORD_IMAGE PL/SQLパッケージ: BFILEのgetProperties( )

構文

getProperties(imageBfile IN OUT NOCOPY BFILE, 
              attributes IN OUT NOCOPY CLOB);

説明

BFILEに格納されたイメージ・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、入力CLOBに格納します。このプロシージャは、XML形式で一連のフォーマット・プロパティをCLOBに移入します。

パラメータ

imageBfile

BFILEで格納されるイメージ・データを指定します。

attributes

getProperties( )プロシージャによって抽出されたXML属性情報を格納するCLOBを指定します。このCLOBには、XML形式でイメージBFILEデータのフォーマット・プロパティが移入されます。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.NULL_CONTENT

この例外は、imageBfileパラメータがNULLの場合に発生します。

既知のイメージ属性のプロパティ情報を取得します。

DECLARE
   img_attrib CLOB;
   data BFILE:=BFILENAME('IMAGEDIR','testimg.dat');
BEGIN
   DBMS_LOB.CREATETEMPORARY(img_attrib, FALSE, DBMS_LOB.CALL);

   -- get properties from bfile
   ORDSYS.ORD_IMAGE.getProperties(data, img_attrib);

   -- print length of extracted properties
   DBMS_OUTPUT.PUT_LINE('Size of XML Annotations ' || 
        TO_CHAR(DBMS_LOB.GETLENGTH(img_attrib)));

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.17 ORD_IMAGE PL/SQLパッケージ: BFILEのgetProperties( ) (すべての属性)

構文

getProperties(imageBfile        IN OUT NOCOPY BFILE, 
              mimeType          OUT VARCHAR2, 
              width             OUT INTEGER, 
              height            OUT INTEGER, 
              fileFormat        OUT VARCHAR2, 
              contentFormat     OUT VARCHAR2, 
              compressionFormat OUT VARCHAR2, 
              contentLength     OUT INTEGER);

説明

BFILEに格納されたイメージ・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、明示的パラメータとして戻します。このプロシージャは、イメージ・データの属性(MIMEタイプ、幅、高さ、ファイル・フォーマット、コンテンツ・フォーマット、圧縮形式およびコンテンツ長)のプロパティを抽出します。

パラメータ

imageBfile

BFILEで格納されるイメージ・データを指定します。

mimeType

イメージ・データのMIMEタイプが戻されます。

width

イメージの幅がピクセル単位で戻されます。

height

イメージの高さがピクセル単位で戻されます。

fileFormat

イメージ・データのフォーマットが戻されます。

contentFormat

イメージのタイプ(モノクロなど)が戻されます。

compressionFormat

イメージ・データに使用される圧縮アルゴリズムが戻されます。

contentLength

ディスク上のイメージ・ファイルのサイズがバイト単位で戻されます。

使用上の注意

メディア・ソースからプロパティを抽出できない場合、それぞれのパラメータがNULLに設定されます。

プラグマ

なし。

例外

ORDSourceExceptions.NULL_CONTENT

この例外は、imageBfileパラメータがNULLの場合に発生します。

既知のイメージ属性のプロパティ情報を取得します。

DECLARE
   img_data BFILE:=BFILENAME('IMAGEDIR','testimg.dat');
   mimeType VARCHAR2(80);
   width NUMBER;
   height NUMBER;
   fileFormat VARCHAR2(32):=NULL;
   contentFormat VARCHAR2(4000);
   compressionFormat VARCHAR2(4000);
   contentLength NUMBER;
BEGIN
 
   -- get properties from bfile
   ORDSYS.ORD_IMAGE.getProperties(img_data,
         mimeType, width, height, fileFormat,
         contentFormat, compressionFormat, contentLength);

   -- print properties
   DBMS_OUTPUT.PUT_LINE('mimeType: ' || mimeType );
   DBMS_OUTPUT.PUT_LINE('width: ' || width );
   DBMS_OUTPUT.PUT_LINE('height: ' || height );
   DBMS_OUTPUT.PUT_LINE('fileFormat: ' || fileFormat );
   DBMS_OUTPUT.PUT_LINE('contentFormat: ' || contentFormat );
   DBMS_OUTPUT.PUT_LINE('compressionFormat: ' || compressionFormat );
   DBMS_OUTPUT.PUT_LINE('contentLength: ' || contentLength );

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.18 ORD_IMAGE PL/SQLパッケージ: BLOBのgetProperties( )

構文

getProperties(imageBlob  IN BLOB, 
              attributes IN OUT NOCOPY CLOB);

説明

BLOBに格納されたイメージ・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、入力CLOBに格納します。このプロシージャは、XML形式で一連のフォーマット・プロパティをCLOBに移入します。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

attributes

getProperties( )プロシージャによって抽出されたXML属性情報を格納するCLOBを指定します。このCLOBには、XML形式でイメージBLOBデータのフォーマット・プロパティが移入されます。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.NULL_CONTENT

この例外は、imageBlobパラメータがNULLの場合に発生します。

既知のイメージ属性のプロパティ情報を取得します。

DECLARE
   img_attrib CLOB;
   img_data BLOB;
BEGIN
   SELECT img, attributes INTO img_data, img_attrib 
        FROM timg WHERE N=1 FOR UPDATE;

   -- get properties from blob
   ORDSYS.ORD_IMAGE.getProperties(img_data, img_attrib);

   -- print length of extracted properties
   DBMS_OUTPUT.PUT_LINE('Size of XML Annotations ' ||
        TO_CHAR(DBMS_LOB.GETLENGTH(img_attrib)));

   UPDATE timg SET img=img_data, attributes=img_attrib WHERE N=1;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.19 ORD_IMAGE PL/SQLパッケージ: BLOBのgetProperties( ) (すべての属性)

構文

getProperties(imageBlob         IN BLOB, 
              mimeType          OUT VARCHAR2, 
              width             OUT INTEGER, 
              height            OUT INTEGER, 
              fileFormat        OUT VARCHAR2, 
              contentFormat     OUT VARCHAR2, 
              compressionFormat OUT VARCHAR2, 
              contentLength     OUT INTEGER);

説明

BLOBに格納されたイメージ・データを読み取ってサポートしているフォーマットのメディア属性の値を取得し、明示的パラメータとして戻します。このプロシージャは、イメージ・データの属性(MIMEタイプ、幅、高さ、ファイル・フォーマット、コンテンツ・フォーマット、圧縮形式およびコンテンツ長)のプロパティを抽出します。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

mimeType

イメージ・データのMIMEタイプが戻されます。

width

イメージの幅がピクセル単位で戻されます。

height

イメージの高さがピクセル単位で戻されます。

fileFormat

イメージ・データのフォーマットが戻されます。

contentFormat

イメージのタイプ(モノクロなど)が戻されます。

compressionFormat

イメージ・データに使用される圧縮アルゴリズムが戻されます。

contentLength

ディスク上のイメージ・ファイルのサイズがバイト単位で戻されます。

使用上の注意

メディア・ソースからプロパティを抽出できない場合、それぞれのパラメータがNULLに設定されます。

プラグマ

なし。

例外

ORDImageExceptions.NULL_CONTENT

この例外は、imageBlobパラメータがNULLの場合に発生します。

既知のイメージ属性のプロパティ情報を取得します。

DECLARE
   img_data BLOB;
   mimeType VARCHAR2(4000);
   width NUMBER;
   height NUMBER;
   fileFormat VARCHAR2(32):=NULL;
   contentFormat VARCHAR2(4000);
   compressionFormat VARCHAR2(4000);
   contentLength NUMBER;
BEGIN
   SELECT img, mimetype, width, height, fileformat, contentformat,
            compressionformat, contentlength 
       INTO img_data, mimeType, width, height, fileFormat,
            contentFormat, compressionFormat, contentLength
       FROM timg WHERE N=1 FOR UPDATE;
  
   -- get properties from blob
   ORDSYS.ORD_IMAGE.getProperties(img_data,
       mimeType, width, height, fileFormat,
       contentFormat, compressionFormat, contentLength);

   -- print properties
   DBMS_OUTPUT.PUT_LINE('mimeType: ' || mimeType );
   DBMS_OUTPUT.PUT_LINE('width: ' || width );
   DBMS_OUTPUT.PUT_LINE('height: ' || height );
   DBMS_OUTPUT.PUT_LINE('fileFormat: ' || fileFormat );
   DBMS_OUTPUT.PUT_LINE('contentFormat: ' || contentFormat );
   DBMS_OUTPUT.PUT_LINE('compressionFormat: ' || compressionFormat );
   DBMS_OUTPUT.PUT_LINE('contentLength: ' || contentLength );

   UPDATE timg SET
         img=img_data, mimetype=mimeType, width=width,
         height=height, fileformat=fileFormat, contentformat=contentFormat,
         compressionformat=compressionFormat, contentlength=contentLength
       WHERE N=1;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.20 ORD_IMAGE PL/SQLパッケージ: BFILEのgrayscale( )

構文

grayscale(imageBfile IN OUT NOCOPY BFILE, 
          dest       IN OUT NOCOPY BLOB);

説明

イメージを8ビット・グレースケール・イメージに変換し、結果イメージを宛先BLOBに書き込みます。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

dest

新しいイメージのコピー先を指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージがNULLの場合に発生します。

ORDImageExceptions.NULL_LOCAL_DATA

この例外は、imageBfileパラメータがNULLの場合に発生します。

ソース・イメージをグレースケール・イメージに変換します。

DECLARE
   source_image BFILE:=BFILENAME('IMAGEDIR','testimg.jpg');
   dest_image BLOB;
BEGIN
   SELECT img INTO dest_image FROM timg WHERE N = 2402 FOR UPDATE;
   
   -- convert source image into a grayscale image
   ORDSYS.ORD_IMAGE.grayscale(source_image, dest_image);

   UPDATE timg SET img=dest_image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.21 ORD_IMAGE PL/SQLパッケージ: BLOBのgrayscale( )

構文

grayscale(imageBlob IN BLOB, 
          dest      IN OUT NOCOPY BLOB);

説明

イメージを8ビット・グレースケール・イメージに変換し、結果イメージを宛先BLOBに書き込みます。

パラメータ

imageBlob

BLOBで格納されるソース・イメージ・データを指定します。

dest

新しいイメージのコピー先を指定します。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

ソース・イメージをグレースケール・イメージに変換します。

DECLARE
   source_image BLOB;
   dest_image BLOB;
BEGIN
   SELECT img INTO source_image FROM timg WHERE N=1910;
   SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
   -- convert source image into a grayscale image
   ORDSYS.ORD_IMAGE.grayscale(source_image, dest_image);

   UPDATE timg SET img=dest_image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.22 ORD_IMAGE PL/SQLパッケージ: インプレースのgrayscale( )

構文

grayscale(imageBlob IN OUT NOCOPY BLOB);

説明

イメージを8ビット・グレースケール・イメージに変換し、イメージを上書きします。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

イメージをグレースケール・イメージに変換します。

DECLARE
   image BLOB;
BEGIN
   SELECT img INTO image FROM timg WHERE N=2402 FOR UPDATE;
   
   -- convert into a grayscale image
   ORDSYS.ORD_IMAGE.grayscale(image);

   UPDATE timg SET img=image WHERE N=2402;
   COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.23 ORD_IMAGE PL/SQLパッケージ: BFILEのmirror( )

構文

mirror(imageBfile IN OUT NOCOPY BFILE, 
       dest       IN OUT NOCOPY BLOB);

説明

イメージの列を逆(右から左)に順序付けし、結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

dest

新しいイメージのコピー先を指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージがNULLの場合に発生します。

ORDImageExceptions.NULL_LOCAL_DATA

この例外は、imageBfileパラメータがNULLの場合に発生します。

左右を反転したミラー・イメージを作成します。

DECLARE
    source_image BFILE := BFILENAME('IMAGEDIR','testimg.jpg');
    dest_image BLOB;
BEGIN
    SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- mirror image
    ORDSYS.ORD_IMAGE.mirror(source_image, dest_image);

    UPDATE timg SET img=dest_image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.24 ORD_IMAGE PL/SQLパッケージ: BLOBのmirror( )

構文

mirror(imageBlob IN BLOB, 
       dest      IN OUT NOCOPY BLOB);

説明

イメージの列を逆(右から左)に順序付けし、結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBlob

BLOBで格納されるソース・イメージ・データを指定します。

dest

新しいイメージのコピー先を指定します。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

左右を反転したミラー・イメージを作成します。

DECLARE
    source_image BLOB;
    dest_image BLOB;
BEGIN
    SELECT img INTO source_image FROM timg WHERE N=1910;
    SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- mirror image
    ORDSYS.ORD_IMAGE.mirror(source_image, dest_image);

    UPDATE timg SET img=dest_image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.25 ORD_IMAGE PL/SQLパッケージ: インプレースのmirror( )

構文

mirror(imageBlob IN OUT NOCOPY BLOB);

説明

イメージの列を逆(右から左)に順序付けし、イメージを上書きします。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

左右を反転したミラー・イメージを作成します。

DECLARE
    image BLOB;
BEGIN
    SELECT img INTO image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- mirror image
    ORDSYS.ORD_IMAGE.mirror(image);

    UPDATE timg SET img=image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.26 ORD_IMAGE PL/SQLパッケージ: BFILEのpage( )

構文

page(imageBfile IN OUT NOCOPY BFILE, 
     pageNumber IN INTEGER, 
     dest       IN OUT NOCOPY BLOB);

説明

複数ページのファイルでページを選択し、結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。このプロシージャは、TIFFイメージにのみ使用できます。ページ0は最初のページです。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

pageNumber

選択するページ番号を表す負ではない整数です。0 (ゼロ)は最初のページを表します。

dest

新しいイメージのコピー先を指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージがNULLの場合に発生します。

ORDImageExceptions.NULL_LOCAL_DATA

この例外は、imageBfileパラメータがNULLの場合に発生します。

複数ページのTIFFファイルからページを選択し、選択したページを出力として書き込みます。

DECLARE
    source_image BFILE := BFILENAME('IMAGEDIR','testimg.tif');
    dest_image BLOB;
BEGIN
    SELECT img INTO dest_image FROM timg WHERE N=1910 FOR UPDATE;

    -- page selection from a multipage TIFF input image
    ORDSYS.ORD_IMAGE.page(source_image, 0, dest_image);

    UPDATE timg SET img=dest_image WHERE N=1910;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.27 ORD_IMAGE PL/SQLパッケージ: BLOBのpage( )

構文

page(imageBlob  IN BLOB, 
     pageNumber IN INTEGER, 
     dest       IN OUT NOCOPY BLOB);

説明

複数ページのファイルでページを選択し、結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。このプロシージャは、TIFFイメージにのみ使用できます。ページ0は最初のページです。

パラメータ

imageBlob

BLOBで格納されるソース・イメージ・データを指定します。

pageNumber

選択するページ番号を表す負ではない整数です。0 (ゼロ)は最初のページを表します。

dest

新しいイメージのコピー先を指定します。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

複数ページのTIFFファイルからページを選択し、選択したページを出力として書き込みます。

DECLARE
    source_image BLOB;
    dest_image BLOB;
BEGIN
    --select the source image and select for update the destination image
    SELECT img INTO source_image FROM timg WHERE N=1910;
    SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
       
    -- page selection from a multipage TIFF input image
    ORDSYS.ORD_IMAGE.page(source_image, 0, dest_image);

    UPDATE timg SET img=dest_image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.28 ORD_IMAGE PL/SQLパッケージ: インプレースのpage( )

構文

page(imageBlob  IN OUT NOCOPY BLOB, 
     pageNumber IN INTEGER);

説明

複数ページのファイルでページを選択し、イメージを上書きします。このプロシージャは、TIFFイメージにのみ使用できます。ページ0は最初のページです。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

pageNumber

選択するページ番号を表す負ではない整数です。0 (ゼロ)は最初のページを表します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

複数ページのTIFFファイルからページを選択し、選択したページを出力として書き込みます。

DECLARE
    image BLOB;
BEGIN
    -- select the source image for update
    SELECT img INTO image FROM timg WHERE N=1910 FOR UPDATE;
   
    -- page selection from a multipage TIFF input image
    ORDSYS.ORD_IMAGE.page(image, 0);

    UPDATE timg SET img=image WHERE N=1910;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.29 ORD_IMAGE PL/SQLパッケージ: process( )

構文

process(imageBlob IN OUT NOCOPY BLOB, 
        command   IN VARCHAR2);

説明

BLOB上でイメージ処理操作を実行し、イメージを上書きします。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

command

実行するイメージ処理操作のリストを指定します。

使用上の注意

1つ以上のイメージ属性を変更できます。

ORD_IMAGE process( )プロシージャはイメージ属性を変更するため、イメージ属性を格納する場合は、ORD_IMAGE process( )プロシージャをコールした後にORD_IMAGE getProperties( )プロシージャをコールしてください。

すべてのイメージ処理演算子のリストおよび説明は、「process( )」を参照してください。

process( )の演算子の詳細は、「Oracle Multimediaイメージ処理」を参照してください。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

32 x 32ピクセルの最大サイズでソース・イメージを圧縮JFIFイメージに変換します。

DECLARE
    img_attrib CLOB;
    image_data BLOB;
BEGIN
    SELECT img, attributes INTO image_data, img_attrib FROM timg 
        WHERE N=1 FOR UPDATE;

    -- Process the image by converting it to a maximum 32x32 image 
    -- of format JFIF with maximum compression   
    ORDSYS.ORD_IMAGE.process(image_data, 'fileFormat=JFIF, 
        compressionQuality=MAXCOMPRATIO,maxScale=32 32');
   
    -- get properties of processed image
    ORDSYS.ORD_IMAGE.getProperties(image_data, img_attrib);

    UPDATE timg SET img=image_data, attributes=img_attrib WHERE N=1;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.30 ORD_IMAGE PL/SQLパッケージ: BFILEのprocessCopy( )

構文

processCopy(imageBfile IN OUT NOCOPY BFILE, 
            command    IN VARCHAR2, 
            dest       IN OUT NOCOPY BLOB);

説明

ソース・イメージに対して1つ以上のイメージ処理操作を実行して、BFILEに格納されたソース・イメージから派生イメージを作成し、結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

command

新しい派生イメージを作成して宛先BLOBに格納するためにイメージに対して実行するイメージ処理操作のリストです。

dest

新しいイメージのコピー先を指定します。

使用上の注意

このプロシージャをコールすると、ソースBFILEから宛先BLOBへイメージが処理されます。

このプロシージャをコールすると、1つ以上のイメージ属性が変更されます。そのため、イメージ属性を格納する場合は、ORD_IMAGE processCopy( )プロシージャをコールした後に宛先イメージでORD_IMAGE getProperties( )プロシージャをコールしてください。

すべてのイメージ処理演算子のリストおよび説明は、「process( )」を参照してください。

processCopy( )の演算子の詳細は、「Oracle Multimediaイメージ処理」を参照してください。

プラグマ

なし。

例外

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージがNULLの場合に発生します。

ORDImageExceptions.NULL_LOCAL_DATA

この例外は、imageBfileパラメータがNULLの場合に発生します。

32 x 32ピクセルの最大サイズでソース・イメージを圧縮JFIFイメージに変換します。

DECLARE
    dest_attrib CLOB;
    image_data BFILE:=BFILENAME('IMAGEDIR','testimg.dat');
    destination_data BLOB;
    Command VARCHAR2(4000);
BEGIN
    SELECT img, attributes INTO destination_data, dest_attrib FROM timg 
        WHERE N=2 FOR UPDATE;

    -- Process the image by converting it to a maximum 32x32 image 
    -- of format JFIF with maximum compression 
    Command := 'fileFormat=JFIF, compressionQuality=MAXCOMPRATIO,maxScale=32 32';

    -- process with a pre-defined command
    ORDSYS.ORD_IMAGE.processCopy(image_data, Command, destination_data);

    -- get properties of processed image
    ORDSYS.ORD_IMAGE.getProperties(destination_data, dest_attrib);

    UPDATE timg SET img=destination_data, attributes=dest_attrib WHERE N=2;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.31 ORD_IMAGE PL/SQLパッケージ: BLOBのprocessCopy( )

構文

processCopy(imageBlob IN BLOB, 
            command   IN VARCHAR2, 
            dest      IN OUT NOCOPY BLOB);

説明

ソース・イメージに対して1つ以上のイメージ処理操作を実行して、BLOBに格納されたソース・イメージから派生イメージを作成し、結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBlob

BLOBで格納されるソース・イメージ・データを指定します。

command

新しい派生イメージを作成して宛先BLOBに格納するためにイメージに対して実行するイメージ処理操作のリストです。

dest

新しいイメージのコピー先を指定します。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

このメソッドをコールすると、ソースBLOBから宛先BLOBへイメージが処理されます。

このプロシージャをコールすると、1つ以上のイメージ属性が変更されます。そのため、イメージ属性を格納する場合は、ORD_IMAGE processCopy( )プロシージャをコールした後に宛先イメージでORD_IMAGE getProperties( )プロシージャをコールしてください。

すべてのイメージ処理演算子のリストおよび説明は、「process( )」を参照してください。

processCopy( )の演算子の詳細は、「Oracle Multimediaイメージ処理」を参照してください。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

32 x 32ピクセルの最大サイズでソース・イメージを圧縮JFIFイメージに変換します。

DECLARE
    dest_attrib CLOB;
    image_data BLOB;
    destination_data BLOB;
    Command VARCHAR2(4000);
BEGIN
    SELECT img INTO image_data FROM timg WHERE N=1;
    SELECT img, attributes INTO destination_data, dest_attrib FROM timg 
        WHERE N=2 FOR UPDATE;

    -- Process the image by converting it to a maximum 32x32 image 
    -- of format JFIF with maximum compression       
    Command := 'fileFormat=JFIF, compressionQuality=MAXCOMPRATIO,maxScale=32 32';

    -- process with pre-defined command
    ORDSYS.ORD_IMAGE.processCopy(image_data, Command, destination_data);

    -- get properties of processed image
    ORDSYS.ORD_IMAGE.getProperties(destination_data, dest_attrib);
   
    UPDATE timg SET img=destination_data, attributes=dest_attrib WHERE N=2;
    COMMIT;

EXCEPTION
   WHEN OTHERS THEN
        RAISE;
END;
/

5.32 ORD_IMAGE PL/SQLパッケージ: BFILEのputMetadata( )

構文

putMetadata(imageBfile   IN BFILE, 
            dest         IN OUT NOCOPY BLOB, 
            xmlData      IN SYS.XMLType, 
            metadataType IN VARCHAR2 DEFAULT ‘XMP’, 
            encoding     IN VARCHAR2 DEFAULT ‘UTF-8’);

説明

イメージが含まれているBFILEおよびスキーマが妥当なXML文書を受け入れ、ターゲット・イメージのファイル・フォーマットへの埋込みに適したバイナリ・パケットを作成します。このパケットは、エンコーディング・パラメータの値に基づいてエンコードされます。metadataTypeパラメータの値がXMPの場合、このプロシージャは新しいXMPパケットをイメージに書き込み、既存のXMPパケットを置き換えます。埋込みメタデータが含まれている新しいイメージ・ファイルは、destパラメータに戻されます。元のイメージは変更されません。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

dest

埋込みメタデータが含まれているイメージを受け取るBLOBを指定します。

xmlData

指定したmetadataTypeに対してスキーマが妥当なXML文書を含むXMLTypeを指定します。metadataTypeパラメータの値がXMPの場合は、ルート要素に整形式RDF文書が含まれている必要があります。

metadataType

書き込むメタデータのタイプを指定する文字列です。有効な値はXMPで、この値がデフォルトです。

encoding

イメージ・ファイルで使用される文字コードを指定します。有効な値は、UTF-8、UTF-16、UTF-16BEおよびUTF-16LEです。デフォルトは、UTF-8です。

使用上の注意

同じxmlData入力から生成されたバイナリ・メタデータ・パケットのサイズは、エンコーディングによって異なる場合があります。サポートされるエンコーディングはイメージ・ファイル・フォーマットによって異なり、バイナリ・メタデータ・パケットのサイズが制限される場合があります。サポートされるイメージ・フォーマットの制限は、次のとおりです。

  • GIF89aは、UTF-8エンコーディングのみをサポートします。

  • JPEGのバイナリ・パケットのサイズは、65502バイトより小さくする必要があります。

  • TIFFのバイナリ・パケットのサイズは、4GBより小さくする必要があります。

関連項目:

メタデータの機能の詳細は、『Oracle Multimediaユーザーズ・ガイド』を参照してください

プラグマ

なし。

例外

ORDImageExceptions.NULL_CONTENT

この例外は、imageBfileパラメータがNULLの場合に発生します。

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージBLOBがNULLの場合に発生します。

新しいイメージを表timgに挿入します。新しいイメージは、IMAGEDIRディレクトリ・オブジェクトからのイメージtestimg.datのコピーで、更新されたXMPメタデータを含みます。

DECLARE
    dest_attrib CLOB;
    destination_data BLOB;
    image_data BFILE:=BFILENAME('IMAGEDIR','testimg.dat');
    xmlData XMLType;
BEGIN
    SELECT img INTO destination_data FROM timg WHERE N=2402 FOR UPDATE;
 
    xmlData:=xmltype(
         '<xmpMetadata xmlns="http://xmlns.oracle.com/ord/meta/xmp">' ||
         '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"' ||
         ' xmlns:dc="http://purl.org/dc/elements/1.1/">' ||
         '<rdf:Description>' ||
         ' <dc:rights>' ||
         ' <rdf:Alt>' ||
         ' <rdf:li xml:lang="en-us">' ||
         ' Oracle Corporation' ||
         ' </rdf:li>' ||
         ' </rdf:Alt>'||
         '</dc:rights>' ||
         '</rdf:Description>' ||
         '</rdf:RDF>' ||
         '</xmpMetadata>', 'http://xmlns.oracle.com/ord/meta/xmp'); 
 
    -- add metadata to the destination image
    ORDSYS.ORD_IMAGE.putMetadata(image_data, destination_data, 
                                 xmlData, 'xmp', 'utf-8');

    -- get properties of the updated image
    ORDSYS.ORD_IMAGE.getProperties(destination_data, dest_attrib);

    UPDATE timg SET img=destination_data, attributes=dest_attrib 
        WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.33 ORD_IMAGE PL/SQLパッケージ: BLOBのputMetadata( )

構文

putMetadata(imageBlob    IN BLOB, 
            dest         IN OUT NOCOPY BLOB, 
            xmlData      IN SYS.XMLType, 
            metadataType IN VARCHAR2 DEFAULT ‘XMP’, 
            encoding     IN VARCHAR2 DEFAULT ‘UTF-8’);

説明

イメージが含まれているBLOBおよびスキーマが妥当なXML文書を受け入れ、ターゲット・イメージのファイル・フォーマットへの埋込みに適したバイナリ・パケットを作成します。このパケットは、エンコーディング・パラメータの値に基づいてエンコードされます。metadataTypeパラメータの値がXMPの場合、このプロシージャは新しいXMPパケットをイメージに書き込み、既存のXMPパケットを置き換えます。埋込みメタデータが含まれている新しいイメージ・ファイルは、destパラメータに戻されます。元のイメージは変更されません。

パラメータ

imageBlob

BLOBで格納されるソース・イメージ・データを指定します。

dest

埋込みメタデータが含まれているイメージを受け取るBLOBを指定します。

xmlData

指定したmetadataTypeに対してスキーマが妥当なXML文書を含むXMLTypeを指定します。metadataTypeパラメータの値がXMPの場合は、ルート要素に整形式RDF文書が含まれている必要があります。

metadataType

書き込むメタデータのタイプを指定する文字列です。有効な値はXMPで、この値がデフォルトです。

encoding

イメージ・ファイルで使用される文字コードを指定します。有効な値は、UTF-8、UTF-16、UTF-16BEおよびUTF-16LEです。デフォルトは、UTF-8です。

使用上の注意

一時LOBには読取り一貫性がないため、1つの一時LOBをimageBlobパラメータおよびdestパラメータの両方で使用することはできません。

同じxmlData入力から生成されたバイナリ・メタデータ・パケットのサイズは、エンコーディングによって異なる場合があります。サポートされるエンコーディングはイメージ・ファイル・フォーマットによって異なり、バイナリ・メタデータ・パケットのサイズが制限される場合があります。サポートされるイメージ・フォーマットの制限は、次のとおりです。

  • GIF89aは、UTF-8エンコーディングのみをサポートします。

  • JPEGのバイナリ・パケットのサイズは、65502バイトより小さくする必要があります。

  • TIFFのバイナリ・パケットのサイズは、4GBより小さくする必要があります。

関連項目:

メタデータの機能の詳細は、『Oracle Multimediaユーザーズ・ガイド』を参照してください

プラグマ

なし。

例外

ORDImageExceptions.NULL_CONTENT

この例外は、imageBlobパラメータがNULLの場合に発生します。

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージがNULLの場合に発生します。

更新されたXMPメタデータを含む新しいイメージを表timgに挿入します。

DECLARE
    dest_attrib CLOB;
    source_image BLOB;
    dest_image BLOB;
    xmlData XMLType;
BEGIN
    SELECT img INTO source_image FROM timg WHERE N=1910;
    SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;

    xmlData:=xmltype(
         '<xmpMetadata xmlns="http://xmlns.oracle.com/ord/meta/xmp">' ||
         '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"' ||
         ' xmlns:dc="http://purl.org/dc/elements/1.1/">' ||
         '<rdf:Description>' ||
         ' <dc:rights>' ||
         ' <rdf:Alt>' ||
         ' <rdf:li xml:lang="en-us">' ||
         ' Oracle Corporation' ||
         ' </rdf:li>' ||
         ' </rdf:Alt>'||
         '</dc:rights>' ||
         '</rdf:Description>' ||
         '</rdf:RDF>' ||
         '</xmpMetadata>', 'http://xmlns.oracle.com/ord/meta/xmp'); 
 
    -- add metadata to the destination image 
    ORDSYS.ORD_IMAGE.putMetadata(source_image, dest_image, 
                                 xmlData, 'xmp', 'utf-8');

    -- get properties of updated image
    ORDSYS.ORD_IMAGE.getProperties(dest_image, dest_attrib);

    UPDATE timg SET img=dest_image, attributes=dest_attrib WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.34 ORD_IMAGE PL/SQLパッケージ: BFILEのrotate( )

構文

rotate(imageBfile IN OUT NOCOPY BFILE, 
       angle      IN FLOAT, 
       dest       IN OUT NOCOPY BLOB);

説明

指定された角度に基づいてイメージ・プレーン内でイメージを回転し、結果イメージを宛先BLOBに書き込みます。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

angle

イメージを回転する基準となるイメージ・プレーン内の角度です。正の値を指定すると、右方向に回転します。負の値を指定すると、左方向に回転します。

dest

新しいイメージのコピー先を指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージがNULLの場合に発生します。

ORDImageExceptions.NULL_LOCAL_DATA

この例外は、imageBfileパラメータがNULLの場合に発生します。

イメージを45度回転します。

DECLARE
    source_image BFILE:=BFILENAME('IMAGEDIR','testimg.jpg');
    dest_image BLOB;
BEGIN
    SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- rotate image
    ORDSYS.ORD_IMAGE.rotate(source_image, 45, dest_image);

    UPDATE timg SET img=dest_image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.35 ORD_IMAGE PL/SQLパッケージ: BLOBのrotate( )

構文

rotate(imageBlob IN OUT NOCOPY BFILE, 
       angle     IN FLOAT, 
       dest      IN OUT NOCOPY BLOB);

説明

指定された角度に基づいてイメージ・プレーン内でイメージを回転し、結果イメージを宛先BLOBに書き込みます。

パラメータ

imageBlob

BLOBで格納されるソース・イメージ・データを指定します。

angle

イメージを回転する基準となるイメージ・プレーン内の角度です。正の値を指定すると、右方向に回転します。負の値を指定すると、左方向に回転します。

dest

新しいイメージのコピー先を指定します。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

イメージを45度回転します。

DECLARE
    source_image BLOB;
    dest_image BLOB;
BEGIN
    SELECT img INTO source_image FROM timg WHERE N=1910;
    SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- rotate image
    ORDSYS.ORD_IMAGE.rotate(source_image, 45, dest_image);

    UPDATE timg SET img=dest_image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.36 ORD_IMAGE PL/SQLパッケージ: インプレースのrotate( )

構文

rotate(imageBlob IN OUT NOCOPY BLOB, 
       angle     IN FLOAT);

説明

指定された角度に基づいてイメージ・プレーン内でイメージを回転し、イメージを上書きします。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

angle

イメージを回転する基準となるイメージ・プレーン内の角度です。正の値を指定すると、右方向に回転します。負の値を指定すると、左方向に回転します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

イメージを45度回転します。

DECLARE
    image BLOB;
BEGIN
    SELECT img INTO image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- rotate image
    ORDSYS.ORD_IMAGE.rotate(image,45);

    UPDATE timg SET img=image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.37 ORD_IMAGE PL/SQLパッケージ: BFILEのscale( )

構文

scale(imageBfile IN OUT NOCOPY BFILE, 
      width      IN INTEGER, 
      height     IN INTEGER, 
      dest       IN OUT NOCOPY BLOB);

説明

アスペクト比を保持したまま、ピクセル単位で指定されたサイズ(幅、高さ)にimageBfileのイメージをスケール変更し、結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

width

結果イメージのピクセル単位の最大幅です。

height

結果イメージのピクセル単位の最大高さです。

dest

新しいイメージのコピー先を指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージがNULLの場合に発生します。

ORDImageExceptions.NULL_LOCAL_DATA

この例外は、imageBfileパラメータがNULLの場合に発生します。

特定の寸法でイメージをスケール変更します。

DECLARE
    source_image BFILE := BFILENAME('IMAGEDIR','testimg.jpg');
    dest_image BLOB;
BEGIN
    SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- scale image with specific width and height values
    ORDSYS.ORD_IMAGE.scale(source_image, 20, 20, dest_image);

    UPDATE timg SET img=dest_image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.38 ORD_IMAGE PL/SQLパッケージ: BLOBのscale( )

構文

scale(imageBlob IN BLOB, 
      width     IN INTEGER, 
      height    IN INTEGER, 
      dest      IN OUT NOCOPY BLOB);

説明

アスペクト比を保持したまま、ピクセル単位で指定されたサイズ(幅、高さ)にimageBlobのイメージをスケール変更し、結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBlob

BLOBで格納されるソース・イメージ・データを指定します。

width

結果イメージのピクセル単位の最大幅です。

height

結果イメージのピクセル単位の最大高さです。

dest

新しいイメージのコピー先を指定します。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

特定の寸法でイメージをスケール変更します。

DECLARE
    source_image BLOB;
    dest_image BLOB;
BEGIN
    SELECT img INTO source_image FROM timg WHERE N=1910;
    SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- scale image with specific width and height values
    ORDSYS.ORD_IMAGE.scale(source_image, 20, 20, dest_image);

    UPDATE timg SET img=dest_image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.39 ORD_IMAGE PL/SQLパッケージ: インプレースのscale( )

構文

scale(imageBlob IN OUT NOCOPY BLOB, 
      width     IN INTEGER, 
      height    IN INTEGER);

説明

アスペクト比を保持したまま、ピクセル単位で指定されたサイズ(幅、高さ)にimageBlobのイメージをスケール変更し、イメージを上書きします。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

width

結果イメージのピクセル単位の最大幅です。

height

結果イメージのピクセル単位の最大高さです。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

特定の寸法でイメージをスケール変更します。

DECLARE
    image BLOB;
BEGIN
    SELECT img INTO image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- scale image with specific width and height values
    ORDSYS.ORD_IMAGE.scale(image, 20, 20);

    UPDATE timg SET img=image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.40 ORD_IMAGE PL/SQLパッケージ: 係数によるBFILEのscale( )

構文

scale(imageBfile  IN OUT NOCOPY BFILE, 
      scaleFactor IN FLOAT, 
      dest        IN OUT NOCOPY BLOB);

説明

指定されたスケール係数でimageBfileのイメージをスケール変更し、アスペクト比を保持したまま結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

scaleFactor

イメージをスケール変更する基準となる係数です。正のFLOAT値です。

dest

新しいイメージのコピー先を指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージがNULLの場合に発生します。

ORDImageExceptions.NULL_LOCAL_DATA

この例外は、imageBfileパラメータがNULLの場合に発生します。

1.5の係数でイメージをスケール変更します。

DECLARE
    source_image BFILE := BFILENAME('IMAGEDIR','testimg.jpg');
    dest_image BLOB;
BEGIN
    SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- scale image with a specific factor
    ORDSYS.ORD_IMAGE.scale(source_image, 1.5, dest_image);

    UPDATE timg SET img=dest_image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.41 ORD_IMAGE PL/SQLパッケージ: 係数によるBLOBのscale( )

構文

scale(imageBlob   IN BLOB, 
      scaleFactor IN FLOAT, 
      dest        IN OUT NOCOPY BLOB);

説明

指定されたスケール係数でimageBlobのイメージをスケール変更し、アスペクト比を保持したまま結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBlob

BLOBで格納されるソース・イメージ・データを指定します。

scaleFactor

イメージをスケール変更する基準となる係数です。正のFLOAT値です。

dest

新しいイメージのコピー先を指定します。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

1.5の係数でイメージをスケール変更します。

DECLARE
    source_image BLOB;
    dest_image BLOB;
BEGIN
    SELECT img INTO source_image FROM timg WHERE N=1910;
    SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- scale image with a specific factor
    ORDSYS.ORD_IMAGE.scale(source_image, 1.5, dest_image);

    UPDATE timg SET img=dest_image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.42 ORD_IMAGE PL/SQLパッケージ: 係数によるインプレースのscale( )

構文

scale(imageBlob   IN OUT NOCOPY BLOB, 
      scaleFactor IN FLOAT);

説明

指定されたスケール係数でimageBlobのイメージをスケール変更し、アスペクト比を保持したままイメージを上書きします。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

scaleFactor

イメージをスケール変更する基準となる係数です。正のFLOAT値です。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

1.5の係数でイメージをスケール変更します。

DECLARE
    image BLOB;
BEGIN
    SELECT img INTO image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- scale image with a specific factor
    ORDSYS.ORD_IMAGE.scale(image, 1.5);

    UPDATE timg SET img=image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.43 ORD_IMAGE PL/SQLパッケージ: BFILEのthumbnail( )

構文

thumbnail(imageBfile IN OUT NOCOPY BFILE, 
          dest       IN OUT NOCOPY BLOB);

説明

80 x 80ピクセルの縮小イメージを作成して、BFILEに格納されたソース・イメージから派生イメージを作成し、アスペクト比を保持したまま結果イメージを宛先BLOBに書き込みます。元のソース・イメージは変更されません。

パラメータ

imageBfile

BFILEで格納されるソース・イメージ・データを指定します。

dest

新しいイメージのコピー先を指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.NULL_DESTINATION

この例外は、宛先イメージがNULLの場合に発生します。

ORDImageExceptions.NULL_LOCAL_DATA

この例外は、imageBfileパラメータがNULLの場合に発生します。

ソース・イメージから縮小イメージを作成します。

DECLARE
    source_image BFILE:=BFILENAME('IMAGEDIR','testimg.jpg');
    dest_image BLOB;
BEGIN
    SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- generate thumbnail image
    ORDSYS.ORD_IMAGE.thumbnail(source_image, dest_image);

    UPDATE timg SET img=dest_image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.44 ORD_IMAGE PL/SQLパッケージ: BLOBのthumbnail( )

構文

thumbnail(imageBlob IN BLOB, 
          dest      IN OUT NOCOPY BLOB);

説明

80 x 80ピクセルの縮小イメージを作成して、BLOBに格納されたソース・イメージから派生イメージを作成し、アスペクト比を保持したまま結果イメージを宛先BLOBに書き込みます。

パラメータ

imageBlob

BLOBで格納されるソース・イメージ・データを指定します。

dest

新しいイメージのコピー先を指定します。

使用上の注意

一時LOBには読取り一貫性がないため、同じ一時LOBをimageBlobパラメータおよびdestパラメータの両方に使用することはできません。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

ソース・イメージから縮小イメージを作成します。

DECLARE
    source_image BLOB;
    dest_image BLOB;
BEGIN
    SELECT img INTO source_image FROM timg WHERE N=1910;
    SELECT img INTO dest_image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- generate thumbnail image
    ORDSYS.ORD_IMAGE.thumbnail(source_image, dest_image);

    UPDATE timg SET img=dest_image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/

5.45 ORD_IMAGE PL/SQLパッケージ: インプレースのthumbnail( )

構文

thumbnail(imageBlob IN OUT NOCOPY BLOB);

説明

imageBlobのイメージから80 x 80ピクセルの縮小イメージを作成し、アスペクト比を保持したままイメージを上書きします。

パラメータ

imageBlob

BLOBで格納されるイメージ・データを指定します。

使用上の注意

なし。

プラグマ

なし。

例外

ORDImageExceptions.DATA_NOT_LOCAL

この例外は、imageBlobパラメータがNULLの場合に発生します。

ソース・イメージから縮小イメージを作成します。

DECLARE
    image BLOB;
BEGIN
    SELECT img INTO image FROM timg WHERE N=2402 FOR UPDATE;
   
    -- generate thumbnail image
    ORDSYS.ORD_IMAGE.thumbnail(image);

    UPDATE timg SET img=image WHERE N=2402;
    COMMIT;

EXCEPTION
    WHEN OTHERS THEN
        RAISE;
END;
/