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パッケージのファンクションおよびプロシージャの詳細は、次のトピックを参照してください。
関連項目:
-
オペレーティング・システム・ファイルを対象にイメージ・データをエクスポートおよびインポートする方法の詳細は、「すべてのOracle Multimedia PL/SQLパッケージAPIに共通のプロシージャ」を参照してください。
-
例で使用されている表およびディレクトリの詳細は、Oracle Multimedia PL/SQLパッケージの例を参照してください。
5.1 ORD_IMAGE PL/SQLパッケージ: BFILEのgetMetadata( )
構文
getMetadata(imageBfile IN BFILE,
metadataType IN VARCHAR2 DEFAULT ‘ALL’) RETURN SYS.XMLSequenceType;
説明
指定したタイプのメタデータをBFILEに格納されたイメージ・データから抽出し、スキーマが妥当なXML文書の配列を戻します。一致するメタデータが検出されなかった場合は、空の配列が戻されます。
パラメータ
使用上の注意
入力パラメータmetadataTypeの値がALLで、2つ以上のタイプのサポートされるメタデータがイメージに存在する場合、このファンクションは複数のXML文書(検出されたメタデータのタイプごとに1つ)を戻します。入力パラメータの値が他の値の場合、このファンクションは0(ゼロ)または1つのXML文書を戻します。
各文書は、XMLTypeのインスタンスとして格納され、いずれかのメタデータ・スキーマに基づいていてます。XQuery関数のfn:namespace-uriを使用して、その文書に示されているメタデータのタイプを判別します。
サポートされるメタデータ・スキーマの詳細は、「Oracle MultimediaメタデータXMLスキーマ」を参照してください。
関連項目:
-
メタデータの機能の詳細は、『Oracle Multimediaユーザーズ・ガイド』を参照してください
-
XQuery関数の詳細は、『Oracle XML DB開発者ガイド』を参照してください
プラグマ
なし。
例外
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文書の配列を戻します。一致するメタデータが検出されなかった場合は、空の配列が戻されます。
パラメータ
使用上の注意
入力パラメータmetadataTypeの値がALLで、2つ以上のタイプのサポートされるメタデータがイメージに存在する場合、このファンクションは複数のXML文書(検出されたメタデータのタイプごとに1つ)を戻します。入力パラメータの値が他の値の場合、このファンクションは0(ゼロ)または1つのXML文書を戻します。
各文書は、XMLTypeのインスタンスとして格納され、いずれかのメタデータ・スキーマに基づいていてます。XQuery関数のfn:namespace-uriを使用して、その文書に示されているメタデータのタイプを判別します。
サポートされるメタデータ・スキーマの詳細は、「Oracle MultimediaメタデータXMLスキーマ」を参照してください。
関連項目:
-
メタデータの機能の詳細は、『Oracle Multimediaユーザーズ・ガイド』を参照してください
-
XQuery関数の詳細は、『Oracle XML DB開発者ガイド』を参照してください
プラグマ
なし。
例外
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に書き込みます。元のソース・イメージは変更されません。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。元のソース・イメージは変更されません。
使用上の注意
一時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);
説明
イメージを指定されたファイル・フォーマットに変換し、イメージを上書きします。
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。元のソース・イメージは変更されません。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。元のソース・イメージは変更されません。
パラメータ
使用上の注意
一時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のイメージから切り取るウィンドウを定義し、切り取ったイメージで上書きします。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。
使用上の注意
一時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);
説明
イメージの走査線を逆(下から上)に順序付けし、イメージを上書きします。
使用上の注意
なし。
プラグマ
なし。
例外
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に移入します。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
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タイプ、幅、高さ、ファイル・フォーマット、コンテンツ・フォーマット、圧縮形式およびコンテンツ長)のプロパティを抽出します。
パラメータ
使用上の注意
メディア・ソースからプロパティを抽出できない場合、それぞれのパラメータが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に移入します。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
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タイプ、幅、高さ、ファイル・フォーマット、コンテンツ・フォーマット、圧縮形式およびコンテンツ長)のプロパティを抽出します。
パラメータ
使用上の注意
メディア・ソースからプロパティを抽出できない場合、それぞれのパラメータが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に書き込みます。
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。
使用上の注意
一時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ビット・グレースケール・イメージに変換し、イメージを上書きします。
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。元のソース・イメージは変更されません。
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。元のソース・イメージは変更されません。
使用上の注意
一時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);
説明
イメージの列を逆(右から左)に順序付けし、イメージを上書きします。
使用上の注意
なし。
プラグマ
なし。
例外
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は最初のページです。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
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は最初のページです。
パラメータ
使用上の注意
一時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は最初のページです。
使用上の注意
なし。
プラグマ
なし。
例外
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上でイメージ処理操作を実行し、イメージを上書きします。
使用上の注意
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に書き込みます。元のソース・イメージは変更されません。
パラメータ
使用上の注意
このプロシージャをコールすると、ソース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に書き込みます。元のソース・イメージは変更されません。
パラメータ
使用上の注意
一時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に書き込みます。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。
パラメータ
使用上の注意
一時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);
説明
指定された角度に基づいてイメージ・プレーン内でイメージを回転し、イメージを上書きします。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。元のソース・イメージは変更されません。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。元のソース・イメージは変更されません。
パラメータ
使用上の注意
一時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のイメージをスケール変更し、イメージを上書きします。
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。元のソース・イメージは変更されません。
パラメータ
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。元のソース・イメージは変更されません。
パラメータ
使用上の注意
一時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のイメージをスケール変更し、アスペクト比を保持したままイメージを上書きします。
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。元のソース・イメージは変更されません。
使用上の注意
なし。
プラグマ
なし。
例外
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に書き込みます。
使用上の注意
一時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ピクセルの縮小イメージを作成し、アスペクト比を保持したままイメージを上書きします。
使用上の注意
なし。
プラグマ
なし。
例外
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;
/