Oracle interMedia Image

27
1 Oracle interMedia Image Christian Dietz

description

Oracle interMedia Image. Christian Dietz. Inhalt. Allgemein LOB ORDImage Eigenschaften Beispiele. Allgemein LOB. interMedia Image ist eine Komponente von Oracle interMedia - PowerPoint PPT Presentation

Transcript of Oracle interMedia Image

Page 1: Oracle interMedia Image

1

Oracle interMediaImage

Christian Dietz

Page 2: Oracle interMedia Image

2

Inhalt

Allgemein LOB ORDImage Eigenschaften Beispiele

Page 3: Oracle interMedia Image

3

Allgemein LOB

- interMedia Image ist eine Komponente von Oracle interMedia

- erlaubt die Verwaltung von Bildern in einer integrierten Weise mit anderen Unternehmensinformationen über Objekttypen und benutzerdefinierte Datentypen

- Enthält erweiterte Basis-Methoden zum Verwalten und Ändern von Bilddaten

Page 4: Oracle interMedia Image

4

Allgemein LOB

Warum Bilder in DB speichern? Bequemeres Verwalten Transaktionen Sparen von Entwicklungszeit und –kosten

durch Zusatzmethoden von ORDImage

Nachteil: DB wird langsamer (BLOB bis 4 GB)

Page 5: Oracle interMedia Image

5

Allgemein LOB

Mediadaten können intern oder extern gespeichert werden

BLOB: intern, Daten im Tablespace

BFILE: extern, Verweis auf Datei im lokalen Dateisystem – vom DBS verwaltet

Page 6: Oracle interMedia Image

6

ORD

Oracle interMedia benutzt OR (Objekt-Relationale)-DB Typen um multimediale Daten zu verwalten

- diese Objekte enthalten Attribute (Metadaten und Mediendaten) und Methoden (zur Datenmanipulation)

Page 7: Oracle interMedia Image

7

ORD

Attribute sind Informationen über die Daten, wie - Objektlänge, Kompression, Format- Speicherinformationen (Datentyp, Speicherplatz/Ort)- Sourcenamen- Charakteristische Daten der jeweiligen Medien

(Audio, Video oder Bild)

Methoden sind Prozeduren, welche auf die Objekte angewendet werden können, z.B. getContent() oder process()

Page 8: Oracle interMedia Image

8

ORDImage

Attribute Datentyp Beschreibung

source ORDSource ORDSource, in dem die Bilddaten gespeichert sind

height INTEGER Höhe des Bildes

width INTEGER Breite des Bildes

contentLength INTEGER Die Größe des Bildes in Byte

fileFormat VARCHAR2 (4000) Datenformat (z.B. jpg)

contentFormat VARCHAR2 (4000) Bildtyp(z. B. schwarz/weiß, grau)

compressionFormat VARCHAR2 (4000) Kompressionsalgorithmus

mimeType VARCHAR2 (4000) MIME-Typ

Page 9: Oracle interMedia Image

9

ORDImage

Unterstützte Bildformate:

BMP GIF JPG CALS Raster – Format JFIF – Format PCX – Format PICT – Format Raw Pixel – Format Sun Raster – Format Targa – Format TIFF - Format

Page 10: Oracle interMedia Image

10

ORDImage

bietet die Grundfunktionalität zur Manipulation, Speicherung und zum Laden digitaler Bilder

und Ähnlichkeitssuche in Bilddaten, welche sich

auf Farbe, Kontur und Textur beziehen durch Erweiterungen möglich

Kann erweitert werden

Page 11: Oracle interMedia Image

11

ORDImage

Möglichkeiten ORDImage – Typ: Änderung Kodierung, Skalierung die technischen Bildattribute in Anfragen zu

verwenden

Page 12: Oracle interMedia Image

12

Bsp. Tabelle anlegen

- Beispiel der Benutzung von ORDImage

CREATE TABLE bilder(ID INTEGER, Name(varchar 80)Bild ORDSYS.ORDImage);

Page 13: Oracle interMedia Image

13

Bsp.: Bild als BFILE speichern

INSERT INTO bilder (ID, Name, Bild) VALUES(1, ‘Blume',

ORDSYS.ORDImage.init('file','ORDIMGDIR',‘Blume.gif'))

sourceLocation Argument 'ORDIMGDIR' von ORDSYS.ORDImage.init() muss ein lokales Verzeichnis sein.

Page 14: Oracle interMedia Image

14

Bildattribute automatisch bestimmen

DECLARE Image ORDSYS.ORDImage; -- Anwendungsvariable

BEGIN INSERT INTO bilder VALUES(1, ‘Blume', ORDSYS.ORDImage.init('file','ORDIMGDIR',‘Blume.gif')) --speichern

--in Variable auslesenSELECT Bild INTO Image FROM Bilder WHERE Bildername = 'test' for UPDATE;

Image.setProperties; --Bildattribute ermitteln

UPDATE bilder SET Bild = Image WHERE Bildername = Blume'; COMMIT;

END;

Page 15: Oracle interMedia Image

15

Als BLOB (Unterschied)

Als BLOB speichern:

INSERT INTO bilder VALUES ( 10, ‚Blume', ORDSYS.ORDImage(ORDSYS.ORDSource(empty_blob(),NULL,NULL,NULL,SYSDATE,1), NULL,NULL,NULL,NULL,NULL,NULL,NULL));

Page 16: Oracle interMedia Image

16

Als BLOB

DECLARE Image ORDSys.ORDImage; Iblob BLOB;

BEGIN INSERT INTO bilder VALUES ('$ID‚,‘Name‘,ordsys.ordImage(ORDSYS.ORDSource (EMPTY_BLOB(), NULL,NULL,NULL,SYSDATE,1), NULL,NULL,NULL,NULL,NULL,NULL,NULL));

SELECT Bild INTO Image FROM bilder WHERE ID='$ID' FOR UPDATE;

Iblob := ….. --Bilddaten zuweisenUPDATE bilder SET Bild = Image WHERE Name = Blume'; COMMIT;

END;

Page 17: Oracle interMedia Image

17

Gültigkeit der Bilddaten

interMedia prüft nicht die Gültigkeit der Bilddaten

Anhand der Eigenschaften nicht nachprüfbar bei JPG, da Oracle nur JPG in Standardformatierung verarbeiten kann

Lösung: nach Einfügen Bildmaterial laden und um Faktor 1 skalieren

Page 18: Oracle interMedia Image

18

Bild anzeigen

header ("Content-Type: ".$Mimetype);

echo $BinaryBild;

Header-Tag „Content-Type“ muss unbedingt an den Browser gesendet werden, damit dieser erkennt, um was für einen Inhalt es sich hier handelt – Bsp.: image/jpeg

Page 19: Oracle interMedia Image

19

Beispiele

Zugriff auf die Attribute erfolgt mittels

Spaltenname.getAttribut()

Kann in Anfragen verwendet werden

Page 20: Oracle interMedia Image

20

Beispielanfragen

Liefere alle Bilder die eine bestimmte Breite nicht überschreiten

SELECT Name, Bild.getWidth()

FROM bilder

WHERE Bild.getWidth() < 32;

Page 21: Oracle interMedia Image

21

Beispielanfragen

Liefere die ID‘s der Bilder mit Dateigröße wenn das Bild im JPEG-Format vorliegt

SELECT Name, Bild.getContentLength()

FROM bilder

WHERE Bild.getCompressionFormat() = 'JPEG';

Page 22: Oracle interMedia Image

22

Bsp. Bilddaten kopieren

DECLARE Image_1 ORDSYS.ORDImage;Image_2 ORDSYS.ORDImage; BEGIN

SELECT Bild INTO Image_1 FROM bilder WHERE Name = 'Nelke'; SELECT Bild INTO Image_2 FROM bilder WHERE Name = 'Rose' FOR UPDATE;

-- Bilddaten von Image_1 nach Image_2 Image_1.copy(Image_2);

UPDATE bilder SET Bild = Image_2 WHERE Name = 'Nelke'; END;

Page 23: Oracle interMedia Image

23

Bsp.: Skalieren

DECLAREImage ORDSYS.ORDImage;BEGIN

-- Bild aus DB ladenSELECT Bild INTO Image FROM bilderWHERE id=1 FOR UPDATE;-- Bild auf die Größe 500x500 skalierenImage.process (’maxScale=(500,500)’);-- Veränderte Daten speichernUPDATE bilder SET Bild = Image WHERE id =10;

END;

Page 24: Oracle interMedia Image

24

Bildformat umwandeln

DECLARE Image ORDSYS.ORDImage; BEGIN

SELECT Bild INTO Image -- Bild in Variable speichernFROM bilder WHERE Name = ‚Blume' FOR UPDATE;

Image.process('fileFormat=TIFF'); -- In TIFF-Format umwandeln

UPDATE bilder -- Bild mit neuemSET Bild = Image -- Bildformat speichernWHERE Name = ‚Blume';

END;

Page 25: Oracle interMedia Image

25

ORDImage

Attribute Datentyp Beschreibung

source ORDSource ORDSource, in dem die Bilddaten gespeichert sind

height INTEGER Höhe des Bildes

width INTEGER Breite des Bildes

contentLength INTEGER Die Größe des Bildes in Byte

fileFormat VARCHAR2 (4000) Datenformat (z.B. jpg)

contentFormat VARCHAR2 (4000) Bildtyp(z. B. schwarz/weiß, grau)

compressionFormat VARCHAR2 (4000) Kompressionsalgorithmus

mimeType VARCHAR2 (4000) MIME-Typ

Page 26: Oracle interMedia Image

26

Fazit

Bilder können direkt bei der Ausgabe konvertiert und skaliert werden

Nachteil kann unter Umständen viel Zeit in Anspruch nehmen (z.B. JPEG)

Bei häufig verwendeten Formaten besser zweites LOB direkt beim Speichern anlegen

Page 27: Oracle interMedia Image

27

Quellen

Oracle interMedia User‘s Guide php-homepage.de