Поддържане на стандарта sql/mm still image в oracle multimedia

33
ПОДДЪРЖАНЕ НА СТАНДАРТА SQL/MM STILL IMAGE В ORACLE MULTIMEDIA доц. д-р Цветанка Георгиева-Трифонова

Upload: tsvetanka-georgieva

Post on 21-Feb-2017

234 views

Category:

Data & Analytics


3 download

TRANSCRIPT

Page 1: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ПОДДЪРЖАНЕ НА СТАНДАРТА SQL/MM STILL

IMAGE В ORACLE MULTIMEDIA

доц. д-р Цветанка Георгиева-Трифонова

Page 2: Поддържане на стандарта 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 Цветанка Георгиева Моделиране на информационни системи

Page 3: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ПОДДЪРЖАНЕ НА СТАНДАРТА 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 Цветанка Георгиева Моделиране на информационни системи

Page 4: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ПОДДЪРЖАНЕ НА СТАНДАРТА SQL/MM STILL IMAGE (2)

Следните възможности на типа ORDImage не са дефинирани

в стандарта SQL/MM Still Image Standard, затова не са

налични за обектите от тип SI_StillImage:

Съхраняване на данни за изображение извън базата от

данни;

Операции за обработка на изображение (като скалиране,

компресиране и др.);

API за Java клиентско приложение.

За всеки StillImage конструктор или метод съществува

еквивалентна SQL функция или процедура.

4 4 Цветанка Георгиева Моделиране на информационни системи

Page 5: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ПОДДЪРЖАНЕ НА СТАНДАРТА 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 Цветанка Георгиева Моделиране на информационни системи

Page 6: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE

Типът SI_StillImage представя цифрови изображения с

характерните им свойства като височина, широчина, формат

и др.

Дефинирани са следните атрибути: content_SI ORDSYS.ORDSOURCE,

contentLength_SI INTEGER,

format_SI VARCHAR2(4000),

height_SI INTEGER,

width_SI INTEGER,

6 6 Цветанка Георгиева Моделиране на информационни системи

Page 7: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Цветанка Георгиева Моделиране на информационни системи

Page 8: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE – АТРИБУТИ

content_SI: обект от тип ORDSource, който съдържа

двоично изображение или BLOB;

contentLength_SI: дължината на съдържанието на

изображението в байтове;

format_SI: форматът на изображението;

height_SI: височината на изображението;

width_SI: широчината на изображението;

8 8 Цветанка Георгиева Моделиране на информационни системи

Page 9: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE – АТРИБУТИ, ДЕФИНИРАНИ КАТО

РАЗШИРЕНИЯ НА ORACLE

mimeType_ora: MIME типът на информацията;

contentFormat_ora: типът на изображението

(монохромно, др.);

compressionFormat_ora: алгоритъмът за компресиране,

използван за данните на изображението;

9 9 Цветанка Георгиева Моделиране на информационни системи

Page 10: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE – АТРИБУТИ, ДЕФИНИРАНИ КАТО

РАЗШИРЕНИЯ НА ORACLE (2)

retainFeatures_SI: булева стойност, която показва дали

характеристиките на изображението предстои да бъдат

извлечени и кеширани;

averageColorSpec_ora: кешираният SI_Color обект;

colorsList_ora: кешираният масив от цветове;

frequenciesList_ora: кешираният масив от честоти на

цветове;

colorPositions_ora: кешираният масив от позиции на

цветове;

textureEncoding_ora: кешираният масив от текстури.

10 10 Цветанка Георгиева Моделиране на информационни системи

Page 11: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРИ

Конструкторите на обект от тип SI_StillImage са:

SI_StillImage(content)

SI_StillImage(content, explicitFormat)

SI_StillImage(content, explicitFormat,

height, width)

11 11 Цветанка Георгиева Моделиране на информационни системи

Page 12: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Цветанка Георгиева Моделиране на информационни системи

Page 13: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ

SI_STILLIMAGE(CONTENT)

Инициализиране на SI_StillImage атрибути:

content_SI.localData се инициализира с

определено изображение;

contentLength_SI се инициализира с дължината на

съдържанието на изображението, извлечена от

определено изображение;

format_SI се инициализира с формата на

изображението, извлечен от определено изображение;

height_SI се инициализира с височината на

изображение, извлечена от определено изображение;

width_SI се инициализира с широчината на

изображение, извлечена от определено изображение.

13 13 Цветанка Георгиева Моделиране на информационни системи

Page 14: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ

SI_STILLIMAGE(CONTENT) (2)

Има следните параметри:

content – данните за изображението.

Изключенията, които могат да възникнат, са:

ORDImageSIExceptions.NULL_CONTENT – това

изключение възниква, ако параметърът content е

NULL.

14 14 Цветанка Георгиева Моделиране на информационни системи

Page 15: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Цветанка Георгиева Моделиране на информационни системи

Page 16: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Цветанка Георгиева Моделиране на информационни системи

Page 17: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Цветанка Георгиева Моделиране на информационни системи

Page 18: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ

SI_STILLIMAGE(CONTENT, EXPLICITFORMAT)

Инициализиране на SI_StillImage атрибути:

content_SI.localData инициализира се с

определено изображение;

contentLength_SI – с дължината на съдържанието на

изображение, извлечена от определено изображение;

format_SI – с определен формат на изображение;

height_SI – с височината на определено изображение;

width_SI – с широчината на определено изображение;

18 18 Цветанка Георгиева Моделиране на информационни системи

Page 19: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ

SI_STILLIMAGE(CONTENT, EXPLICITFORMAT) (2)

Задават се следните параметри:

content – данните на изображението;

explicitFormat – форматът, който трябва да се

използва, ако определеното изображение е в

неподдържан формат.

Изключенията, които могат да възникнат, са:

ORDImageSIExceptions.NULL_CONTENT – това

изключение възниква, ако параметърът content е

NULL.

19 19 Цветанка Георгиева Моделиране на информационни системи

Page 20: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Не

Page 21: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Цветанка Георгиева Моделиране на информационни системи

Page 22: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Цветанка Георгиева Моделиране на информационни системи

Page 23: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Цветанка Георгиева Моделиране на информационни системи

Page 24: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Цветанка Георгиева Моделиране на информационни системи

Page 25: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ

SI_STILLIMAGE(CONTENT, EXPLICITFORMAT, HEIGHT, WIDTH)

Конструира SI_StillImage стойност от дадено

изображение.

Позволява задаване на формата, височината, широчината

на изображението при подаване на изображение в

неподдържан формат.

Представлява разширение на Oracle към стандарта SQL/MM

Still Image.

25 25 Цветанка Георгиева Моделиране на информационни системи

Page 26: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ

SI_STILLIMAGE(CONTENT, EXPLICITFORMAT, HEIGHT, WIDTH) (2)

Инициализира SI_StillImage атрибутите като:

content_SI.localData се инициализира със

зададеното изображение;

contentLength_SI се инициализира с дължината на

съдържанието, извлечена от зададеното изображение;

format_SI се инициализира със зададения формат;

height_SI се инициализира със зададената височина,

ако височината не може да бъде извлечена от зададеното

изображение;

width_SI се инициализира със зададената широчина,

ако широчината не може да бъде извлечена от

зададеното изображение.

26 26 Цветанка Георгиева Моделиране на информационни системи

Page 27: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ

SI_STILLIMAGE(CONTENT, EXPLICITFORMAT, HEIGHT, WIDTH) (3)

Задават се следните параметри:

content – данните на изображението;

explicitFormat – форматът, който Oracle трябва да

използва, ако изображението е в неподдържан формат;

height – стойността за атрибута height_SI, която

Oracle трябва да използва, ако изображението е в

неподдържан формат;

width – стойността за атрибута width_SI, която Oracle

трябва да използва, ако изображението е в неподдържан

формат.

27 27 Цветанка Георгиева Моделиране на информационни системи

Page 28: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_STILLIMAGE – КОНСТРУКТОРЪТ

SI_STILLIMAGE(CONTENT, EXPLICITFORMAT, HEIGHT, WIDTH) (4)

Изключенията, които могат да възникнат, са:

ORDImageSIExceptions.NULL_CONTENT – това

изключение възниква, ако параметърът content е

NULL;

ORDImageSIExceptions.ILLEGAL_HEIGHT_WIDTH_SPEC

– това изключение възниква, ако стойността на

параметъра height или width е NULL или е

отрицателно число.

28 28 Цветанка Георгиева Моделиране на информационни системи

Page 29: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Не

Page 30: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Цветанка Георгиева Моделиране на информационни системи

Page 31: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ 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 Цветанка Георгиева Моделиране на информационни системи

Page 32: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

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 Цветанка Георгиева Моделиране на информационни системи

Page 33: Поддържане на стандарта SQL/MM Still Image в Oracle Multimedia

ТИПЪТ SI_COLOR

33 33 Цветанка Георгиева Моделиране на информационни системи