5 Oracle Multimedia ORD_IMAGE PL/SQL Package
Oracle Multimedia provides the ORD_IMAGE PL/SQL package. This package provides functions and procedures to perform common operations such as importing and exporting image data to and from operating system files, extracting metadata from and writing metadata to image data, generating thumbnail images, and converting the format of image data.
This package adds Oracle Multimedia support to image data stored in BLOBs and BFILEs.
The ORD_IMAGE package is defined in the ordirpsp.sql file. After installation, this file is available in the Oracle home directory at:
               
<ORACLE_HOME>/ord/im/admin (on Linux and UNIX)
               
<ORACLE_HOME>\ord\im\admin (on Windows)
               
The examples in these topics assume that the TIMG table and the IMAGEDIR directory exist.
See the following topics for details about the functions and procedures in the ORD_IMAGE PL/SQL package:
- 
                     
ORD_IMAGE PL/SQL Package: applyWatermark( ) image for BFILEs
 - 
                     
ORD_IMAGE PL/SQL Package: getProperties( ) (all attributes) for BFILEs
 - 
                     
ORD_IMAGE PL/SQL Package: getProperties( ) (all attributes) for BLOBs
 
See Also:
- 
                        
Procedures Common to All Oracle Multimedia PL/SQL Package APIs for information about exporting and importing image data to and from operating system files
 - 
                        
Examples for Oracle Multimedia PL/SQL Packages for more information about the tables and directories used in the examples
 
5.1 ORD_IMAGE PL/SQL Package: getMetadata( ) for BFILEs
Format
getMetadata(imageBfile   IN BFILE, 
            metadataType IN VARCHAR2 DEFAULT ‘ALL’) RETURN SYS.XMLSequenceType;Description
Extracts the specified types of metadata from the image data stored in a BFILE, and returns an array of schema-valid XML documents. If no matching metadata is found, an empty array is returned.
Parameters
Usage Notes
When the value of input parameter metadataType is ALL, and two or more types of supported metadata are present in the image, this function returns several XML documents, one for each type of metadata found. For other values of the input parameter, the function returns zero or one XML document.
Each document is stored as an instance of XMLType, and is based on one of the metadata schemas. Use the XQuery function fn:namespace-uri to determine the type of metadata represented in that document.
See Oracle Multimedia Metadata XML Schemas for information about the supported metadata schemas.
See Also:
- 
                              
Oracle Multimedia User's Guide for more information about the metadata feature
 - 
                              
Oracle XML DB Developer's Guide for more information about XQuery functions
 
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBfile parameter is NULL.
Examples
Extract the embedded metadata from an imageBfile, and return an array of schema-valid XML documents:
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 Package: getMetadata( ) for BLOBs
Format
getMetadata(imageBlob    IN BLOB, 
            metadataType IN VARCHAR2 DEFAULT ‘ALL’) RETURN SYS.XMLSequenceType;Description
Extracts the specified types of metadata from the image data stored in a BLOB, and returns an array of schema-valid XML documents. If no matching metadata is found, an empty array is returned.
Parameters
Usage Notes
When the value of input parameter metadataType is ALL, and two or more types of supported metadata are present in the image, this function returns several XML documents, one for each type of metadata found. For other values of the input parameter, the function returns zero or one XML document.
Each document is stored as an instance of XMLType, and is based on one of the metadata schemas. Use the XQuery function fn:namespace-uri to determine the type of metadata represented in that document.
See Oracle Multimedia Metadata XML Schemas for information about the supported metadata schemas.
See Also:
- 
                              
Oracle Multimedia User's Guide for more information about the metadata feature
 - 
                              
Oracle XML DB Developer's Guide for more information about XQuery functions
 
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBlob parameter is NULL.
Examples
Extract the embedded metadata from an imageBlob, and return an array of schema-valid XML documents:
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 Package: applyWatermark( ) image for BFILEs
Format
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);Description
Overlays an image watermark onto a source image stored in a BFILE, and writes it to a destination BLOB.
Parameters
- imageBfile
 - 
                           
The source image data represented as a BFILE.
 - added_image
 - 
                           
The watermark image stored in a BFILE to be added to the source image.
 - dest
 - 
                           
The destination BLOB for the watermarked image.
 - logging
 - 
                           
A string that contains information about any unexpected behavior that occurred during the watermarking operation. If the operation is successful, an empty string is returned. Otherwise, this procedure returns a string that describes the unexpected behavior.
 - watermark_properties
 - 
                           
A string list of name-value pairs that define attributes of the watermark image, including: width, height, position, position_x, position_y, and transparency.
 
Usage Notes
Calling this procedure processes the image into the destination BLOB from the source BFILE.
See Watermarking Operations for more information about watermarking operations and watermark properties.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_CONTENT
This exception is raised when the source image or added image is NULL.
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image BLOB is NULL.
Examples
Add a watermark image to an image 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 Package: applyWatermark( ) image for BLOBs
Format
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);Description
Overlays an image watermark onto a source image stored in a BLOB, and writes it to a destination BLOB.
Parameters
- imageBlob
 - 
                           
The source image data represented as a BLOB.
 - added_image
 - 
                           
The watermark image stored in a BLOB to be added to the source image.
 - dest
 - 
                           
The destination BLOB for the watermarked image.
 - logging
 - 
                           
A string that contains information about any unexpected behavior that occurred during the watermarking operation. If the operation is successful, an empty string is returned. Otherwise, this procedure returns a string that describes the unexpected behavior.
 - watermark_properties
 - 
                           
A string list of name-value pairs that define attributes of the watermark image, including: width, height, position, position_x, position_y, and transparency.
 
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Calling this procedure processes the image into the destination BLOB from the source BLOB.
See Watermarking Operations for more information about watermarking operations and watermark properties.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_CONTENT
This exception is raised when the source image or added image is NULL.
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image BLOB is NULL.
Examples
Add a watermark image to an image 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 Package: applyWatermark( ) text for BFILEs
Format
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);Description
Overlays a text watermark onto a source image stored in a BFILE, and writes it to a destination BLOB.
Parameters
- imageBfile
 - 
                           
The source image data represented as a BFILE.
 - added_text
 - 
                           
The watermark text stored in a string to be added to the source image.
 - dest
 - 
                           
The destination BLOB for the watermarked image.
 - logging
 - 
                           
A string that contains information about any unexpected behavior that occurred during the watermarking operation. If the operation is successful, an empty string is returned. Otherwise, this procedure returns a string that describes the unexpected behavior. For example, if the watermark text is so long that it is truncated, this string is returned: WARNING: text is too long and truncated.
 - watermark_properties
 - 
                           
A string list of name-value pairs that define attributes of the watermark text, including: font_name, font_style, font_size, text_color, position_x, position_y, and transparency.
 
Usage Notes
Calling this procedure processes the image into the destination BLOB from the source BFILE.
See Watermarking Operations for more information about watermarking operations and watermark properties.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_CONTENT
This exception is raised when the source image is NULL.
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image BLOB is NULL.
Examples
Add watermark text to an image 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 Package: applyWatermark( ) text for BLOBs
Format
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);Description
Overlays a text watermark onto a source image stored in a BLOB, and writes it to a destination BLOB.
Parameters
- imageBlob
 - 
                           
The source image data represented as a BLOB.
 - added_image
 - 
                           
The watermark text stored in a string to be added to the source image.
 - dest
 - 
                           
The destination BLOB for the watermarked image.
 - logging
 - 
                           
A string that contains information about any unexpected behavior that occurred during the watermarking operation. If the operation is successful, an empty string is returned. Otherwise, this procedure returns a string that describes the unexpected behavior. For example, if the watermark text is so long that it is truncated, this string is returned: WARNING: text is too long and truncated.
 - watermark_properties
 - 
                           
A string list of name-value pairs that define attributes of the watermark text, including: font_name, font_style, font_size, text_color, position_x, position_y, and transparency.
 
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Calling this method processes the image into the destination BLOB from the source BLOB.
See Watermarking Operations for more information about watermarking operations and watermark properties.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_CONTENT
This exception is raised when the source image is NULL.
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image BLOB is NULL.
Examples
Add watermark text to an image 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 Package: convert( ) for BFILEs
Format
convert(imageBfile IN OUT NOCOPY BFILE, 
        fileFormat IN VARCHAR2, 
        dest       IN OUT NOCOPY BLOB);Description
Creates a derivative image from a source image stored in a BFILE by converting the source image into an image of the specified file format and writing the resulting image into the destination BLOB. The original source image is not modified.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image BLOB is NULL.
ORDImageExceptions.NULL_LOCAL_DATA
This exception is raised when the imageBfile parameter is NULL.
Examples
Convert an image to another format:
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 Package: convert( ) for BLOBs
Format
convert(imageBlob  IN BLOB, 
        fileFormat IN VARCHAR2, 
        dest       IN OUT NOCOPY BLOB);Description
Creates a derivative image from a source image stored in a BLOB by converting the source image into an image of the specified file format and writing the resulting image into the destination BLOB. The original source image is not modified.
Parameters
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Convert an image to another format:
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 Package: convert( ) in place
Format
convert(imageBlob  IN OUT NOCOPY BLOB, 
        fileFormat IN VARCHAR2);Description
Converts an image into the specified file format, writing the image back onto itself.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Convert an image to another format:
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 Package: crop( ) for BFILEs
Format
crop(imageBfile IN OUT NOCOPY BFILE, 
     originX    IN INTEGER, 
     originY    IN INTEGER, 
     width      IN INTEGER, 
     height     IN INTEGER, 
     dest       IN OUT NOCOPY BLOB);Description
Creates a derivative image from a source image stored in a BFILE by cropping the source image and writing the resulting image into the destination BLOB. The original source image is not modified.
Parameters
- imageBfile
 - 
                           
The image data represented as a BFILE.
 - originX
 - 
                           
Origin X coordinate pixel value. First pixel value is 0 (zero).
 - originY
 - 
                           
Origin Y coordinate pixel value. First pixel value is 0 (zero).
 - width
 - 
                           
The width of the cut image in pixels.
 - height
 - 
                           
The height of the cut image in pixels.
 - dest
 - 
                           
The destination of the new image.
 
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image BLOB is NULL.
ORDImageExceptions.NULL_LOCAL_DATA
This exception is raised when the imageBfile parameter is NULL.
Examples
Create a new image from a source image, and crop it:
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 Package: crop( ) for BLOBs
Format
crop(imageBlob IN BLOB, 
     originX   IN INTEGER, 
     originY   IN INTEGER, 
     width     IN INTEGER, 
     height    IN INTEGER, 
     dest      IN OUT NOCOPY BLOB);Description
Creates a derivative image from a source image stored in a BLOB by cropping the source image and writing the resulting image into the destination BLOB. The original source image is not modified.
Parameters
- imageBlob
 - 
                           
The image data represented as a BLOB.
 - originX
 - 
                           
Origin X coordinate pixel value. First pixel value is 0 (zero).
 - originY
 - 
                           
Origin Y coordinate pixel value. First pixel value is 0 (zero).
 - width
 - 
                           
The width of the cut image in pixels.
 - height
 - 
                           
The height of the cut image in pixels.
 - dest
 - 
                           
The destination of the new image.
 
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Create a new image from a source image, and crop it:
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 Package: crop( ) in place
Format
crop(imageBlob IN OUT NOCOPY BLOB, 
     originX   IN INTEGER, 
     originY   IN INTEGER, 
     width     IN INTEGER, 
     height    IN INTEGER);Description
Defines a window to crop from the image in imageBlob, writing the cropped image back onto itself.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Create a new image and crop it:
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 Package: flip( ) for BFILEs
Format
flip(imageBfile IN OUT NOCOPY BFILE, 
     dest       IN OUT NOCOPY BLOB);Description
Places the scanlines of a source image in inverse order, swapped top to bottom, and writes the resulting image into the destination BLOB.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image is NULL.
ORDImageExceptions.NULL_LOCAL_DATA
This exception is raised when the imageBfile parameter is NULL.
Examples
Flip an image from top to bottom:
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 Package: flip( ) for BLOBs
Format
flip(imageBlob IN BLOB, 
     dest      IN OUT NOCOPY BLOB);Description
Places the scanlines of an image in inverse order, swapped top to bottom, and writes the resulting image into the destination BLOB.
Parameters
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Flip an image from top to bottom:
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 Package: flip( ) in place
Format
flip(imageBlob IN OUT NOCOPY BLOB);Description
Places the scanlines of an image in inverse order, swapped top to bottom, writing the image back onto itself.
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Flip an image from top to bottom:
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 Package: getProperties( ) for BFILEs
Format
getProperties(imageBfile IN OUT NOCOPY BFILE, 
              attributes IN OUT NOCOPY CLOB);Description
Reads the image data stored in a BFILE to get the values of the media attributes for supported formats, and then stores them in the input CLOB. This procedure populates the CLOB with a set of format properties in XML form.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBfile parameter is NULL.
Examples
Get the property information for known image attributes:
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 Package: getProperties( ) (all attributes) for BFILEs
Format
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);Description
Reads the image data stored in a BFILE to get the values of the media attributes for supported formats, and then returns them as explicit parameters. This procedure extracts the properties for these attributes of the image data: MIME type, width, height, file format, content format, compression format, and content length.
Parameters
- imageBfile
 - 
                           
The image data represented as a BFILE.
 - mimeType
 - 
                           
The MIME type of the image data.
 - width
 - 
                           
The width of the image in pixels.
 - height
 - 
                           
The height of the image in pixels.
 - fileFormat
 - 
                           
The format of the image data.
 - contentFormat
 - 
                           
The type of image (monochrome, and so on).
 - compressionFormat
 - 
                           
The compression algorithm used on the image data.
 - contentLength
 - 
                           
The size of the image file on disk, in bytes.
 
Usage Notes
If a property cannot be extracted from the media source, then the respective parameter is set to NULL.
Pragmas
None.
Exceptions
ORDSourceExceptions.NULL_CONTENT
This exception is raised when the imageBfile parameter is NULL.
Examples
Get the property information for known image attributes:
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 Package: getProperties( ) for BLOBs
Format
getProperties(imageBlob  IN BLOB, 
              attributes IN OUT NOCOPY CLOB);Description
Reads the image data stored in a BLOB to get the values of the media attributes for supported formats, and then stores them in the input CLOB. This procedure populates the CLOB with a set of format properties in XML form.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBlob parameter is NULL.
Examples
Get the property information for known image attributes:
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 Package: getProperties( ) (all attributes) for BLOBs
Format
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);Description
Reads the image data stored in a BLOB to get the values of the media attributes for supported formats, and then returns them as explicit parameters. This procedure extracts the properties for these attributes of the image data: MIME type, width, height, file format, content format, compression format, and content length.
Parameters
- imageBlob
 - 
                           
The image data represented as a BLOB.
 - mimeType
 - 
                           
The MIME type of the image data.
 - width
 - 
                           
The width of the image in pixels.
 - height
 - 
                           
The height of the image in pixels.
 - fileFormat
 - 
                           
The format of the image data.
 - contentFormat
 - 
                           
The type of image (monochrome, and so on).
 - compressionFormat
 - 
                           
The compression algorithm used on the image data.
 - contentLength
 - 
                           
The size of the image file on disk, in bytes.
 
Usage Notes
If a property cannot be extracted from the media source, then the respective parameter is set to NULL.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBlob parameter is NULL.
Examples
Get the property information for known image attributes:
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 Package: grayscale( ) for BFILEs
Format
grayscale(imageBfile IN OUT NOCOPY BFILE, 
          dest       IN OUT NOCOPY BLOB);Description
Converts an image to an 8-bit grayscale image, and writes the resulting image into the destination BLOB.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image is NULL.
ORDImageExceptions.NULL_LOCAL_DATA
This exception is raised when the imageBfile parameter is NULL.
Examples
Convert a source image into a grayscale image:
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 Package: grayscale( ) for BLOBs
Format
grayscale(imageBlob IN BLOB, 
          dest      IN OUT NOCOPY BLOB);Description
Converts an image to an 8-bit grayscale image, and writes the resulting image into the destination BLOB.
Parameters
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Convert a source image into a grayscale image:
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 Package: grayscale( ) in place
Format
grayscale(imageBlob IN OUT NOCOPY BLOB);Description
Converts an image to an 8-bit grayscale image, writing the image back onto itself.
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Convert an image into a grayscale image:
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 Package: mirror( ) for BFILEs
Format
mirror(imageBfile IN OUT NOCOPY BFILE, 
       dest       IN OUT NOCOPY BLOB);Description
Places the columns of an image in reverse order, swapped left to right, and writes the resulting image into the destination BLOB. The original source image is not modified.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image is NULL.
ORDImageExceptions.NULL_LOCAL_DATA
This exception is raised when the imageBfile parameter is NULL.
Examples
Create a mirrored image from left to right:
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 Package: mirror( ) for BLOBs
Format
mirror(imageBlob IN BLOB, 
       dest      IN OUT NOCOPY BLOB);Description
Places the columns of an image in reverse order, swapped left to right, and writes the resulting image into the destination BLOB. The original source image is not modified.
Parameters
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Create a mirrored image from left to right:
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 Package: mirror( ) in place
Format
mirror(imageBlob IN OUT NOCOPY BLOB);Description
Places the columns of an image in reverse order, swapped left to right, writing the image back onto itself.
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Create a mirrored image from left to right:
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 Package: page( ) for BFILEs
Format
page(imageBfile IN OUT NOCOPY BFILE, 
     pageNumber IN INTEGER, 
     dest       IN OUT NOCOPY BLOB);Description
Selects a page from a multipage file, and writes the resulting image into the destination BLOB. The original source image is not modified. This procedure is for use with TIFF images only. Page 0 is the first page.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image is NULL.
ORDImageExceptions.NULL_LOCAL_DATA
This exception is raised when the imageBfile parameter is NULL.
Examples
Select a page from a multipage TIFF file and write the selected page as output:
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 Package: page( ) for BLOBs
Format
page(imageBlob  IN BLOB, 
     pageNumber IN INTEGER, 
     dest       IN OUT NOCOPY BLOB);Description
Selects a page from a multipage file, and writes the resulting image into the destination BLOB. The original source image is not modified. This procedure is for use with TIFF images only. Page 0 is the first page.
Parameters
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Select a page from a multipage TIFF file and write the selected page as output:
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 Package: page( ) in place
Format
page(imageBlob  IN OUT NOCOPY BLOB, 
     pageNumber IN INTEGER);Description
Selects a page from a multipage file, writing the image back onto itself. This procedure is for use with TIFF images only. Page 0 is the first page.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Select a page from a multipage TIFF file and write the selected page as output:
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 Package: process( )
Format
process(imageBlob IN OUT NOCOPY BLOB, 
        command   IN VARCHAR2);Description
Performs one or more image processing operations on a BLOB, writing the image back onto itself.
Parameters
Usage Notes
You can change one or more image attributes.
The ORD_IMAGE process( ) procedure changes image attributes, therefore if you are storing image attributes, call the ORD_IMAGE getProperties( ) procedure after calling the ORD_IMAGE process( ) procedure.
See process( ) for lists and descriptions of all the image processing operators.
See Oracle Multimedia Image Processing for more information about process( ) operators.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Convert the source image to a compressed JFIF image, with a maximum size of 32 x 32 pixels:
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 Package: processCopy( ) for BFILEs
Format
processCopy(imageBfile IN OUT NOCOPY BFILE, 
            command    IN VARCHAR2, 
            dest       IN OUT NOCOPY BLOB);Description
Creates a derivative image from a source image stored in a BFILE by performing one or more image processing operations on the source image and writing the resulting image into the destination BLOB. The original source image is not modified.
Parameters
Usage Notes
Calling this procedure processes the image into the destination BLOB from the source BFILE.
Calling this procedure changes one or more image attributes. Therefore, if you are storing image attributes, call the ORD_IMAGE getProperties( ) procedure on the destination image after calling the ORD_IMAGE processCopy( ) procedure.
See process( ) for lists and descriptions of all the image processing operators.
See Oracle Multimedia Image Processing for more information about processCopy( ) operators.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image is NULL.
ORDImageExceptions.NULL_LOCAL_DATA
This exception is raised when the imageBfile parameter is NULL.
Examples
Convert the source image to a compressed JFIF image, with a maximum size of 32 x 32 pixels:
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 Package: processCopy( ) for BLOBs
Format
processCopy(imageBlob IN BLOB, 
            command   IN VARCHAR2, 
            dest      IN OUT NOCOPY BLOB);Description
Creates a derivative image from a source image stored in a BLOB by performing one or more image processing operations on the source image and writing the resulting image into the destination BLOB. The original source image is not modified.
Parameters
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Calling this method processes the image into the destination BLOB from the source BLOB.
Calling this procedure changes one or more image attributes. Therefore, if you are storing image attributes, call the ORD_IMAGE getProperties( ) procedure on the destination image after calling the ORD_IMAGE processCopy( ) procedure.
See process( ) for lists and descriptions of all the image processing operators.
See Oracle Multimedia Image Processing for more information about processCopy( ) operators.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Convert the source image to a compressed JFIF image, with a maximum size of 32 x 32 pixels:
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 Package: putMetadata( ) for BFILEs
Format
putMetadata(imageBfile   IN BFILE, 
            dest         IN OUT NOCOPY BLOB, 
            xmlData      IN SYS.XMLType, 
            metadataType IN VARCHAR2 DEFAULT ‘XMP’, 
            encoding     IN VARCHAR2 DEFAULT ‘UTF-8’);Description
Accepts a BFILE containing an image and a schema-valid XML document, and creates a binary packet suitable for embedding in the target image file format. The packet is encoded according to the value of the encoding parameter. If the value of the metadataType parameter is XMP, this procedure writes a new XMP packet to the image, replacing any existing XMP packets. The new image file with embedded metadata is returned in the dest parameter. The original image is not changed.
Parameters
- imageBfile
 - 
                           
The source image data represented as a BFILE.
 - dest
 - 
                           
The BLOB to receive the image containing the embedded metadata.
 - xmlData
 - 
                           
The XMLtype that contains a schema-valid XML document for the indicated metadataType. If the value of the metadataType parameter is XMP, the root element should contain a well-formed RDF document.
 - metadataType
 - 
                           
A string that specifies the type of metadata to write. The valid value is XMP; it is also the default.
 - encoding
 - 
                           
The character encoding to be used in the image file. Valid values are: UTF-8, UTF-16, UTF-16BE, and UTF-16LE. The default is UTF-8.
 
Usage Notes
The binary metadata packet generated from the same xmlData input may have different sizes for different encodings. Different image file formats support different encodings, and may restrict the binary metadata packet size. The restrictions of the supported image formats are as follows:
- 
                           
GIF89a supports UTF-8 encoding only.
 - 
                           
JPEG requires a binary packet size of less than 65502 bytes.
 - 
                           
TIFF requires a binary packet size of less than 4 gigabytes.
 
See Also:
Oracle Multimedia User's Guide for more information about the metadata feature
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBfile parameter is NULL.
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image BLOB is NULL.
Examples
Insert a new image into the table timg. The new image is a copy of the image testimg.dat from the IMAGEDIR directory object, with updated XMP metadata:
                     
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 Package: putMetadata( ) for BLOBs
Format
putMetadata(imageBlob    IN BLOB, 
            dest         IN OUT NOCOPY BLOB, 
            xmlData      IN SYS.XMLType, 
            metadataType IN VARCHAR2 DEFAULT ‘XMP’, 
            encoding     IN VARCHAR2 DEFAULT ‘UTF-8’);Description
Accepts a BLOB containing an image and a schema-valid XML document, and creates a binary packet suitable for embedding in the target image file format. The packet is encoded according to the value of the encoding parameter. If the value of the metadataType parameter is XMP, this procedure writes a new XMP packet to the image, replacing any existing XMP packets. The new image file with embedded metadata is returned in the dest parameter. The original image is not changed.
Parameters
- imageBlob
 - 
                           
The source image data represented as a BLOB.
 - dest
 - 
                           
The BLOB to receive the image containing the embedded metadata.
 - xmlData
 - 
                           
The XMLtype that contains a schema-valid XML document for the indicated metadataType. If the value of the metadataType parameter is XMP, the root element should contain a well-formed RDF document.
 - metadataType
 - 
                           
A string that specifies the type of metadata to write. The valid value is XMP; it is also the default.
 - encoding
 - 
                           
The character encoding to be used in the image file. Valid values are: UTF-8, UTF-16, UTF-16BE, and UTF-16LE. The default is UTF-8.
 
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use one temporary LOB for both the imageBlob and dest parameters.
The binary metadata packet generated from the same xmlData input may have different sizes for different encodings. Different image file formats support different encodings, and may restrict the binary metadata packet size. The restrictions of the supported image formats are as follows:
- 
                           
GIF89a supports UTF-8 encoding only.
 - 
                           
JPEG requires a binary packet size of less than 65502 bytes.
 - 
                           
TIFF requires a binary packet size of less than 4 gigabytes.
 
See Also:
Oracle Multimedia User's Guide for more information about the metadata feature
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_CONTENT
This exception is raised when the imageBlob parameter is NULL.
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image is NULL.
Examples
Insert a new image in the table timg with updated XMP metadata:
                     
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 Package: rotate( ) for BFILEs
Format
rotate(imageBfile IN OUT NOCOPY BFILE, 
       angle      IN FLOAT, 
       dest       IN OUT NOCOPY BLOB);Description
Rotates an image within the image plane by the angle specified, and writes the resulting image into the destination BLOB.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image is NULL.
ORDImageExceptions.NULL_LOCAL_DATA
This exception is raised when the imageBfile parameter is NULL.
Examples
Rotate an image by 45 degrees:
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 Package: rotate( ) for BLOBs
Format
rotate(imageBlob IN OUT NOCOPY BFILE, 
       angle     IN FLOAT, 
       dest      IN OUT NOCOPY BLOB);Description
Rotates an image within the image plane by the angle specified, and writes the resulting image into the destination BLOB.
Parameters
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Rotate an image by 45 degrees:
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 Package: rotate( ) in place
Format
rotate(imageBlob IN OUT NOCOPY BLOB, 
       angle     IN FLOAT);Description
Rotates an image within the image plane by the angle specified, writing the image back onto itself.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Rotate an image by 45 degrees:
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 Package: scale( ) for BFILEs
Format
scale(imageBfile IN OUT NOCOPY BFILE, 
      width      IN INTEGER, 
      height     IN INTEGER, 
      dest       IN OUT NOCOPY BLOB);Description
Scales the image in imageBfile to a specified size in pixels (width, height), while maintaining the aspect ratio, and writes the resulting image into the destination BLOB. The original source image is not modified.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image is NULL.
ORDImageExceptions.NULL_LOCAL_DATA
This exception is raised when the imageBfile parameter is NULL.
Examples
Scale an image by specific dimensions:
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 Package: scale( ) for BLOBs
Format
scale(imageBlob IN BLOB, 
      width     IN INTEGER, 
      height    IN INTEGER, 
      dest      IN OUT NOCOPY BLOB);Description
Scales the image in imageBlob to a specified size in pixels (width, height), while maintaining the aspect ratio, and writes the resulting image into the destination BLOB. The original source image is not modified.
Parameters
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Scale an image by specific dimensions:
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 Package: scale( ) in place
Format
scale(imageBlob IN OUT NOCOPY BLOB, 
      width     IN INTEGER, 
      height    IN INTEGER);Description
Scales the image in imageBlob to a specified size in pixels (width, height), while maintaining the aspect ratio, and writes the image back onto itself.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Scale an image by specific dimensions:
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 Package: scale( ) by Factor for BFILEs
Format
scale(imageBfile  IN OUT NOCOPY BFILE, 
      scaleFactor IN FLOAT, 
      dest        IN OUT NOCOPY BLOB);Description
Scales the image in imageBfile by the given scale factor, and writes the resulting image into the destination BLOB while maintaining the aspect ratio. The original source image is not modified.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image is NULL.
ORDImageExceptions.NULL_LOCAL_DATA
This exception is raised when the imageBfile parameter is NULL.
Examples
Scale an image by a factor of 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 Package: scale( ) by Factor for BLOBs
Format
scale(imageBlob   IN BLOB, 
      scaleFactor IN FLOAT, 
      dest        IN OUT NOCOPY BLOB);Description
Scales the image in imageBlob by the given scale factor, and writes the resulting image into the destination BLOB while maintaining the aspect ratio. The original source image is not modified.
Parameters
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Scale an image by a factor of 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 Package: scale( ) by Factor in place
Format
scale(imageBlob   IN OUT NOCOPY BLOB, 
      scaleFactor IN FLOAT);Description
Scales the image in imageBlob by the given scale factor, writing the image back onto itself while maintaining the aspect ratio.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Scale an image by a factor of 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 Package: thumbnail( ) for BFILEs
Format
thumbnail(imageBfile IN OUT NOCOPY BFILE, 
          dest       IN OUT NOCOPY BLOB);Description
Creates a derivative image from a source image stored in a BFILE by creating an 80 x 80 pixel thumbnail image and writing the resulting image into the destination BLOB while maintaining the aspect ratio. The original source image is not modified.
Parameters
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.NULL_DESTINATION
This exception is raised when the destination image is NULL.
ORDImageExceptions.NULL_LOCAL_DATA
This exception is raised when the imageBfile parameter is NULL.
Examples
Create an image thumbnail from a source image:
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 Package: thumbnail( ) for BLOBs
Format
thumbnail(imageBlob IN BLOB, 
          dest      IN OUT NOCOPY BLOB);Description
Creates a derivative image from a source image stored in a BLOB by creating an 80x80 pixel thumbnail image and writing the resulting image into the destination BLOB while maintaining the aspect ratio.
Parameters
Usage Notes
Because temporary LOBs do not have read consistency, you cannot use the same temporary LOB for both the imageBlob and dest parameters.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Create an image thumbnail from a source image:
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 Package: thumbnail( ) in place
Format
thumbnail(imageBlob IN OUT NOCOPY BLOB);Description
Creates an 80 x 80 pixel thumbnail image from the image in imageBlob, writing the image back onto itself while maintaining the aspect ratio.
Usage Notes
None.
Pragmas
None.
Exceptions
ORDImageExceptions.DATA_NOT_LOCAL
This exception is raised when the imageBlob parameter is NULL.
Examples
Create an image thumbnail from a source image:
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;
/