Поддържане на стандарта sql/mm still image в oracle multimedia
Post on 21-Feb-2017
235 Views
Preview:
TRANSCRIPT
ПОДДЪРЖАНЕ НА СТАНДАРТА SQL/MM STILL
IMAGE В ORACLE MULTIMEDIA
доц. д-р Цветанка Георгиева-Трифонова
ПОДДЪРЖАНЕ НА СТАНДАРТА SQL/MM STILL IMAGE –
СЪДЪРЖАНИЕ
Типът SI_StillImage
Типът SI_Color
Типът SI_AverageColor
Типът SI_PositionalColor
Типът SI_ColorHistogram
Типът SI_Texture
Типът SI_FeatureList
2 2 Цветанка Георгиева Моделиране на информационни системи
ПОДДЪРЖАНЕ НА СТАНДАРТА SQL/MM STILL IMAGE
Oracle Multimedia поддържа първото издание на стандарта
ISO/IEC 13249-5:2001 SQL MM Part5:StillImage (по-кратко
SQL/MM Still Image), който включва следните обектно-
релационни типове за характеристики на изображения:
SI_StillImage
SI_AverageColor
SI_Color
SI_PositionalColor
SI_ColorHistogram
SI_Texture
SI_FeatureList
3 3 Цветанка Георгиева Моделиране на информационни системи
ПОДДЪРЖАНЕ НА СТАНДАРТА SQL/MM STILL IMAGE (2)
Следните възможности на типа ORDImage не са дефинирани
в стандарта SQL/MM Still Image Standard, затова не са
налични за обектите от тип SI_StillImage:
Съхраняване на данни за изображение извън базата от
данни;
Операции за обработка на изображение (като скалиране,
компресиране и др.);
API за Java клиентско приложение.
За всеки StillImage конструктор или метод съществува
еквивалентна SQL функция или процедура.
4 4 Цветанка Георгиева Моделиране на информационни системи
ПОДДЪРЖАНЕ НА СТАНДАРТА SQL/MM STILL IMAGE (3)
Показаните примери използват таблицата si_media:
CREATE TABLE pm.si_media
( product_id NUMBER(6),
product_photo SI_StillImage,
average_color SI_AverageColor,
color_histogram SI_ColorHistogram,
feature_list SI_FeatureList,
positional_color SI_PositionalColor,
texture SI_Texture,
CONSTRAINT id_pk PRIMARY KEY (product_id) );
Другата използвана таблица е imagetab:
CREATE TABLE pm.imagetab
( id NUMBER, imgblob BLOB );
5 5 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE
Типът SI_StillImage представя цифрови изображения с
характерните им свойства като височина, широчина, формат
и др.
Дефинирани са следните атрибути: content_SI ORDSYS.ORDSOURCE,
contentLength_SI INTEGER,
format_SI VARCHAR2(4000),
height_SI INTEGER,
width_SI INTEGER,
6 6 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE (2)
Атрибути, дефинирани като разширения на Oracle: mimeType_ora VARCHAR2(4000),
contentFormat_ora VARCHAR2(4000),
compressionFormat_ora VARCHAR2(4000),
Флаг: retainFeatures_SI INTEGER,
Атрибути, дефинирани като разширения на Oracle за
характеристиките на кеш изображенията: averageColorSpec_ora SI_Color,
colorsList_ora colorsList,
frequenciesList_ora colorFrequenciesList,
colorPositions_ora colorPositions,
textureEncoding_ora textureEncoding,
7 7 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – АТРИБУТИ
content_SI: обект от тип ORDSource, който съдържа
двоично изображение или BLOB;
contentLength_SI: дължината на съдържанието на
изображението в байтове;
format_SI: форматът на изображението;
height_SI: височината на изображението;
width_SI: широчината на изображението;
8 8 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – АТРИБУТИ, ДЕФИНИРАНИ КАТО
РАЗШИРЕНИЯ НА ORACLE
mimeType_ora: MIME типът на информацията;
contentFormat_ora: типът на изображението
(монохромно, др.);
compressionFormat_ora: алгоритъмът за компресиране,
използван за данните на изображението;
9 9 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – АТРИБУТИ, ДЕФИНИРАНИ КАТО
РАЗШИРЕНИЯ НА ORACLE (2)
retainFeatures_SI: булева стойност, която показва дали
характеристиките на изображението предстои да бъдат
извлечени и кеширани;
averageColorSpec_ora: кешираният SI_Color обект;
colorsList_ora: кешираният масив от цветове;
frequenciesList_ora: кешираният масив от честоти на
цветове;
colorPositions_ora: кешираният масив от позиции на
цветове;
textureEncoding_ora: кешираният масив от текстури.
10 10 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРИ
Конструкторите на обект от тип SI_StillImage са:
SI_StillImage(content)
SI_StillImage(content, explicitFormat)
SI_StillImage(content, explicitFormat,
height, width)
11 11 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРИ (2)
SI_StillImage(content) има следния формат:
SI_StillImage(content IN BLOB)
RETURN SELF as RESULT DETERMINISTIC;
Форматът на еквивалентната SQL функция:
SI_MkStillImage1(content in BLOB)
RETURN SI_StillImage DETERMINISTIC;
Връща нов SI_StillImage обект.
12 12 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT)
Инициализиране на SI_StillImage атрибути:
content_SI.localData се инициализира с
определено изображение;
contentLength_SI се инициализира с дължината на
съдържанието на изображението, извлечена от
определено изображение;
format_SI се инициализира с формата на
изображението, извлечен от определено изображение;
height_SI се инициализира с височината на
изображение, извлечена от определено изображение;
width_SI се инициализира с широчината на
изображение, извлечена от определено изображение.
13 13 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT) (2)
Има следните параметри:
content – данните за изображението.
Изключенията, които могат да възникнат, са:
ORDImageSIExceptions.NULL_CONTENT – това
изключение възниква, ако параметърът content е
NULL.
14 14 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT) (3)
Пример 1. Добавяне на BLOB в колона от тип StillImage
чрез използване на DBMS_LOB.LOADFROMFILE. DECLARE lobd BLOB;
fils BFILE := BFILENAME('MEDIADIR', 'img1.jpg');
BEGIN
DBMS_LOB.CREATETEMPORARY(lobd, TRUE);
DBMS_LOB.FILEOPEN(fils, DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADFROMFILE(lobd, fils,
DBMS_LOB.GETLENGTH(fils));
DBMS_LOB.FILECLOSE(fils);
INSERT INTO pm.si_media (product_id, product_photo)
VALUES(1, new ORDSYS.SI_StillImage(lobd));
DBMS_LOB.FREETEMPORARY(lobd);
COMMIT;
END;
15 15 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT) (4)
Пример 2. Добавяне на BLOB в колона от тип StillImage
чрез използване на DBMS_LOB.LOADFROMFILE. DECLARE lobd BLOB;
fils BFILE := BFILENAME('MEDIADIR', 'img2.jpg');
BEGIN
DBMS_LOB.CREATETEMPORARY(lobd, TRUE);
DBMS_LOB.FILEOPEN(fils, DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADFROMFILE(lobd, fils,
DBMS_LOB.GETLENGTH(fils));
DBMS_LOB.FILECLOSE(fils);
INSERT INTO pm.si_media (product_id, product_photo)
VALUES (2, SI_MkStillImage1(lobd));
DBMS_LOB.FREETEMPORARY(lobd);
COMMIT;
END;
16 16 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРИ (3)
SI_StillImage(content, explicitFormat)
Има следния формат: SI_StillImage(content IN BLOB,
explicitFormat IN VARCHAR2)
RETURN SELF as RESULT DETERMINISTIC;
Форматът на еквивалентната SQL функция: SI_MkStillImage2(content in BLOB,
explicitFormat in VARCHAR2)
RETURN SI_StillImage DETERMINISTIC;
Конструира обект от тип SI_StillImage от определено
изображение и формат.
Позволява да се зададе форматът на изображението, когато
даденото изображение е от неподдържан формат.
От изгледа SI_IMAGE_FORMATS в SI_INFORMTN_SCHEMA
може да се получи списък с поддържаните формати. 17 17 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT)
Инициализиране на SI_StillImage атрибути:
content_SI.localData инициализира се с
определено изображение;
contentLength_SI – с дължината на съдържанието на
изображение, извлечена от определено изображение;
format_SI – с определен формат на изображение;
height_SI – с височината на определено изображение;
width_SI – с широчината на определено изображение;
18 18 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT) (2)
Задават се следните параметри:
content – данните на изображението;
explicitFormat – форматът, който трябва да се
използва, ако определеното изображение е в
неподдържан формат.
Изключенията, които могат да възникнат, са:
ORDImageSIExceptions.NULL_CONTENT – това
изключение възниква, ако параметърът content е
NULL.
19 19 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT) (3)
Връща се грешка, ако параметърът explicitFormat е
NULL или ако е изпълнено някое от следните условия:
Параметърът explicitFormat има за стойност
поддържан формат, но той не съвпада с извлечения
формат от зададеното изображение;
Параметърът explicitFormat има за стойност
неподдържан формат, но форматът, извлечен от
зададеното изображение не е NULL.
20 20 Цветанка Георгиева Моделиране на информационни системи
Параметърът explicitFormat Формат на изображението Грешка
GIFF (поддържан формат) GIF Не
GIFF (поддържан формат) JPEG Да
xyz (неподдържан формат) GIF Да
xyz (неподдържан формат) NULL Не
JFIF (поддържан формат) JPG Не
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT) – ПРИМЕР
Създаване на SI_StillImage обект от дадено
изображение и формат чрез използване на конструктора. SI_StillImage(content, explicitFormat)
DECLARE lobd BLOB;
fils BFILE := BFILENAME('MEDIADIR','img3.jpg');
newimage SI_StillImage;
height NUMBER;
width NUMBER;
myimage SI_StillImage;
BEGIN
-- Поставяне на blob във временен LOB:
DBMS_LOB.CREATETEMPORARY(lobd, TRUE);
DBMS_LOB.FILEOPEN(fils, DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADFROMFILE(lobd, fils,
DBMS_LOB.GETLENGTH(fils));
DBMS_LOB.FILECLOSE(fils);
21 21 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT) – ПРИМЕР (2)
-- Създаване на нов SI_StillImage обект за това изображение (то е в
-- поддържан формат):
newimage := NEW SI_StillImage(lobd, 'JFIF');
-- Ако съхраняваните стойности на височина и широчина са NULL,
-- правилното им задаване се извършва по следния начин.
height := 570;
width := 1168;
IF (newimage.SI_Height is NULL) THEN
newimage.height_SI := height;
END IF;
IF (newimage.SI_Width is NULL) THEN
newimage.width_SI := width;
END IF;
22 22 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT) – ПРИМЕР (3)
-- Добавяне на изображение в таблицата si_media,
-- след което се освобождава временният LOB:
INSERT INTO pm.si_media (product_id, product_photo)
VALUES (3, newimage);
DBMS_LOB.FREETEMPORARY(lobd);
-- Извличане на съхранените стойности на височината и широчината:
SELECT product_photo INTO myimage
FROM pm.si_media WHERE product_id=3;
height := myimage.SI_height;
width := myimage.SI_width;
DBMS_OUTPUT.PUT_LINE('Height is ' || height ||
' pixels.');
DBMS_OUTPUT.PUT_LINE('Width is ' || width ||
' pixels.');
COMMIT;
END;
23 23 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРИ (4)
SI_StillImage(content, explicitFormat, height,
width)
Има следния формат: SI_StillImage(content IN BLOB,
explicitFormat IN VARCHAR2,
height IN INTEGER,
width IN INTEGER)
RETURN SI_STILLIMAGE as RESULT DETERMINISTIC;
Форматът на еквивалентната SQL функция е: ora_SI_MkStillImage(content IN BLOB)
explicitFormat IN VARCHAR2,
height IN INTEGER,
width IN INTEGER)
RETURN SI_StillImage DETERMINISTIC;
24 24 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT, HEIGHT, WIDTH)
Конструира SI_StillImage стойност от дадено
изображение.
Позволява задаване на формата, височината, широчината
на изображението при подаване на изображение в
неподдържан формат.
Представлява разширение на Oracle към стандарта SQL/MM
Still Image.
25 25 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT, HEIGHT, WIDTH) (2)
Инициализира SI_StillImage атрибутите като:
content_SI.localData се инициализира със
зададеното изображение;
contentLength_SI се инициализира с дължината на
съдържанието, извлечена от зададеното изображение;
format_SI се инициализира със зададения формат;
height_SI се инициализира със зададената височина,
ако височината не може да бъде извлечена от зададеното
изображение;
width_SI се инициализира със зададената широчина,
ако широчината не може да бъде извлечена от
зададеното изображение.
26 26 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT, HEIGHT, WIDTH) (3)
Задават се следните параметри:
content – данните на изображението;
explicitFormat – форматът, който Oracle трябва да
използва, ако изображението е в неподдържан формат;
height – стойността за атрибута height_SI, която
Oracle трябва да използва, ако изображението е в
неподдържан формат;
width – стойността за атрибута width_SI, която Oracle
трябва да използва, ако изображението е в неподдържан
формат.
27 27 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT, HEIGHT, WIDTH) (4)
Изключенията, които могат да възникнат, са:
ORDImageSIExceptions.NULL_CONTENT – това
изключение възниква, ако параметърът content е
NULL;
ORDImageSIExceptions.ILLEGAL_HEIGHT_WIDTH_SPEC
– това изключение възниква, ако стойността на
параметъра height или width е NULL или е
отрицателно число.
28 28 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT, HEIGHT, WIDTH) (5)
Връща се грешка, ако стойността на параметъра
explicitFormat е NULL или ако едно следните две
условие е изпълнено:
Стойността на параметъра explicitFormat е
поддържан формат, но не съвпада с формата, извлечен от
изображението;
Стойността на параметъра explicitFormat е
неподдържан формат, но форматът, извлечен от
изображението не е NULL.
29 29 Цветанка Георгиева Моделиране на информационни системи
Параметърът explicitFormat Формат на изображение Грешка
GIF (поддържан формат) GIF Не
GIF (поддържан формат) JPEG Да
xyz (неподдържан формат) GIF Да
xyz (неподдържан формат) Null Не
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT, HEIGHT, WIDTH) –
ПРИМЕР
Конструиране на SI_StillImage стойност от изображение
чрез използване на конструктора. DECLARE lobd BLOB;
fils BFILE := BFILENAME('FILE_DIR','window.psp');
newimage SI_StillImage;
height NUMBER;
width NUMBER;
myimage SI_StillImage;
BEGIN
-- Поставяне на blob във временен LOB:
DBMS_LOB.CREATETEMPORARY(lobd, TRUE);
DBMS_LOB.FILEOPEN(fils, DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADFROMFILE(lobd, fils,
DBMS_LOB.GETLENGTH(fils));
DBMS_LOB.FILECLOSE(fils);
30 30 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ
SI_STILLIMAGE(CONTENT, EXPLICITFORMAT, HEIGHT, WIDTH) –
ПРИМЕР (2) -- Създаване на нов SI_StillImage обект за това изображение (то е в
-- неподдържан формат):
newimage := NEW SI_StillImage(lobd, 'psp', 570, 1168);
-- Добавяне на изображение в таблицата si_media,
-- след което се освобождава временният LOB:
INSERT INTO PM.SI_MEDIA (product_id, product_photo)
VALUES (4, newimage);
DBMS_LOB.FREETEMPORARY(lobd);
-- Извличане на съхранените стойности на височината и широчината:
SELECT product_photo INTO myimage
FROM PM.SI_MEDIA WHERE product_id=4;
height := myimage.SI_height;
width := myimage.SI_width;
DBMS_OUTPUT.PUT_LINE('Height is ' || height ||
' pixels.');
DBMS_OUTPUT.PUT_LINE('Width is ' || width ||
' pixels.');
COMMIT;
END; 31 31 Цветанка Георгиева Моделиране на информационни системи
SI_STILLIMAGE МЕТОДИ
SI_ClearFeatures();
SI_InitFeatures();
SI_ChangeFormat();
SI_Content();
SI_ContentLength();
SI_Format();
SI_Height();
SI_RetainFeatures();
SI_SetContent();
SI_Thumbnail();
SI_Thumbnail(height,width);
SI_Width(). 32 32 Цветанка Георгиева Моделиране на информационни системи
ТИПЪТ SI_COLOR
…
33 33 Цветанка Георгиева Моделиране на информационни системи
top related