90 likes | 195 Views
Oracle multimédia. Kiss Attila Információs Rendszerek Tanszék kiss@inf.elte.hu. Multimédia objektumtípusok. ORDAudio ORDDoc (kép, hang, videó) ORDImage ORDVideo DICOM (orvosi képek) Mindegyik objektumban további metainformációk mellett egy ORDSource
E N D
Oracle multimédia Kiss Attila Információs Rendszerek Tanszék kiss@inf.elte.hu
Multimédia objektumtípusok • ORDAudio • ORDDoc (kép, hang, videó) • ORDImage • ORDVideo • DICOM (orvosi képek) Mindegyik objektumban további metainformációk mellett egy ORDSource objektum tartalmazza a bináris tartalmát a médiaadatnak.
Funkciók • Feltöltés • Metainformációk kezelése • Képfeldolgozás (transzformációk) • Lekérdezések • Exportálás
Feltöltés • 2 lépés: objektum inicializálása, majd értékének módosítása UPDATE-tel. DECLARE img ORDImage; ctx RAW(64) := NULL; BEGIN -- Insert a new row into the pm.online_media table. DELETE FROM pm.online_media WHERE product_id = 3003; INSERT INTO pm.online_media (product_id, product_photo) VALUES (3003, ORDImage.init('FILE', 'MEDIA_DIR', 'laptop.jpg')) RETURNING product_photo INTO img; -- Bring the media into the database and populate the attributes. img.import(ctx); -- ORDImage.import also calls ORDImage.setProperties. -- Update the table with the properties we have extracted. UPDATE pm.online_media SET product_photo = img WHERE product_id = 3003;
Feltöltés ImportFrom-mal DECLARE obj ORDSYS.ORDImage; ctx RAW(64) :=NULL; BEGIN SELECT p.product_photo INTO obj FROM pm.online_media p WHERE p.product_id = 3501 FOR UPDATE; -- set source to a file -- import data obj.importFrom(ctx,'file','FILE_DIR','speaker.jpg'); -- check size DBMS_OUTPUT.PUT_LINE('Length is ' || obj.getContentLength()); DBMS_OUTPUT.PUT_LINE('Source is ' || obj.getSource()); UPDATE pm.online_media p SET p.product_photo = obj WHERE p.product_id = 3501; COMMIT; END;
Exportálás DECLARE img ORDImage; ctx RAW(64) := NULL; BEGIN SELECT product_photo INTO img FROM pm.online_media WHERE product_id = 3117; img.export(ctx, 'FILE', 'MEDIA_DIR', '3117.jpg'); END;
Lekérdezés SELECT t.product_id id, t.product_photo.getHeight() height, t.product_photo.getWidth() width, t.product_photo.getMimeType() mimetype FROM pm.online_media t;
Képfeldolgozás process(), processCopy() • Például kicsinyítés készítése: DECLARE obj ORDSYS.ORDImage; BEGIN SELECT product_photo INTO obj FROM pm.online_media WHERE product_id = 3515 FOR UPDATE; obj.process('maxScale=32 32'); UPDATE pm.online_media p SET product_thumbnail = obj WHERE product_id = 3515; COMMIT; EXCEPTION WHEN ORDSYS.ORDImageExceptions.DATA_NOT_LOCAL THEN DBMS_OUTPUT.PUT_LINE('Data is not local'); END;