Oracle Inter Media Bilder

Werbung
Oracle interMedia
Image
Christian Dietz
1
Inhalt
 Allgemein LOB
 ORDImage Eigenschaften
 Beispiele
2
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
3
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)
4
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
5
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)
6
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()
7
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
8
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
9
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
10
ORDImage
Möglichkeiten ORDImage – Typ:
 Änderung Kodierung, Skalierung
 die technischen Bildattribute in Anfragen zu
verwenden
11
Bsp. Tabelle anlegen
- Beispiel der Benutzung von ORDImage
CREATE TABLE bilder(
ID INTEGER,
Name(varchar 80)
Bild ORDSYS.ORDImage);
12
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.
13
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 auslesen
SELECT Bild INTO Image FROM Bilder WHERE Bildername = 'test' for
UPDATE;
Image.setProperties;
--Bildattribute ermitteln
UPDATE bilder SET Bild = Image WHERE Bildername = Blume';
COMMIT;
END;
14
Als BLOB (Unterschied)
Als BLOB speichern:
INSERT INTO bilder VALUES ( 10, ‚Blume',
ORDSYS.ORDImage(ORDSYS.ORDSource(empty_blob(),NUL
L,NULL,NULL,SYSDATE,1),
NULL,NULL,NULL,NULL,NULL,NULL,NULL));
15
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 zuweisen
UPDATE bilder SET Bild = Image WHERE Name = Blume'; COMMIT;
END;
16
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
17
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
18
Beispiele
Zugriff auf die Attribute erfolgt mittels
Spaltenname.getAttribut()
Kann in Anfragen verwendet werden
19
Beispielanfragen
Liefere alle Bilder die eine bestimmte Breite
nicht überschreiten
SELECT Name, Bild.getWidth()
FROM bilder
WHERE Bild.getWidth() < 32;
20
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';
21
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;
22
Bsp.: Skalieren
DECLARE
Image ORDSYS.ORDImage;
BEGIN
-- Bild aus DB laden
SELECT Bild INTO Image FROM bilder
WHERE id=1 FOR UPDATE;
-- Bild auf die Größe 500x500 skalieren
Image.process (’maxScale=(500,500)’);
-- Veränderte Daten speichern
UPDATE bilder SET Bild = Image WHERE id =10;
END;
23
Bildformat umwandeln
DECLARE Image ORDSYS.ORDImage;
BEGIN
SELECT Bild INTO Image
-- Bild in Variable speichern
FROM bilder
WHERE Name = ‚Blume' FOR UPDATE;
Image.process('fileFormat=TIFF'); -- In TIFF-Format umwandeln
UPDATE bilder
SET Bild = Image
WHERE Name = ‚Blume';
END;
-- Bild mit neuem
-- Bildformat speichern
24
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
25
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
26
Quellen
 Oracle interMedia User‘s Guide
 php-homepage.de
27
Herunterladen