Informatika | Adatbázisok » Galambos Antal - Oracle interMedia

Alapadatok

Év, oldalszám:2012, 85 oldal

Nyelv:magyar

Letöltések száma:78

Feltöltve:2012. május 25.

Méret:1 MB

Intézmény:
[ELTE] Eötvös Loránd Tudományegyetem

Megjegyzés:

Csatolmány:-

Letöltés PDF-ben:Kérlek jelentkezz be!



Értékelések

Nincs még értékelés. Legyél Te az első!


Tartalmi kivonat

EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR Oracle interMedia Készítette: Galambos Antal Programtervező matematikus szak – Nappali tagozat Témavezető: Nikovits Tibor Budapest, 2012.0525 Tartalomjegyzék 1. BEVEZETÉS . 5 2. AZ ORACLE INTERMEDIA . 6 2.1 Általános Oracle interMedia leírás. 6 2.2 Objektum-relációs technológia . 6 2.3 Az interMedia lehetőségei . 6 2.4 Hanganyagok . 8 2.41 2.42 2.5 Digitális hanganyag . 8 A hanganyag komponensei . 8 Heterogén médiaanyagok . 9 2.51 2.52 2.6 Digitális heterogén médiaanyag . 9 A heterogén médiaanyag komponensei . 9 Képanyagok . 9 2.61 2.62 2.63 2.64 2.65 2.66 2.67 2.7 Digitalizált képanyag. 9 A képanyag komponensei . 10 A képanyag metaadatai . 10 A metaadat kinyerése . 10 Képfeldolgozás . 11 Tartalomalapú keresés képek között . 11 Az SQL/MM Still Image szabvány támogatása . 11 Mozgóképanyagok . 11 2.71 2.72 2.8 Digitalizált mozgóképanyag . 11 A mozgóképanyag

komponensei. 11 Multimédiás anyag tárolása és lekérdezése . 12 2.81 2.82 2.83 Általános leírás . 12 Multimédiás anyag tárolása . 12 Multimédiás anyag lekérdezése. 13 2.9 Multimédiás anyag importálása az adatbázisba. 13 2.10 A multimédiás anyag elérése . 14 2.101 2.102 2.103 2.104 2.105 Oracle interMedia Java osztályok. 14 Folyam (stream) tartalom elérése Oracle adatbázisból . 14 Webes technológiák támogatása . 15 Az interMedia Custom Datasource és Datasink osztályai JMF-hez . 16 Az interMedia és a JAI . 16 2.11 Az interMedia architektúrája . 16 2.12 Az Oracle interMedia bővítése . 18 3. ALKALMAZÁS-FEJLESZTÉS ORACLE INTERMEDIA HASZNÁLATÁVAL 19 3.1 PL/SQL kliens alkalmazás fejlesztése PL/SQL API-val . 21 3.11 3.12 3.13 3.14 3.15 Felkészülés az interMedia használatára PL/SQL-ből . 21 Médiatartalom lekérdezése PL/SQL-ből . 21 Médiatartalom exportálása a lokális fájlrendszerbe PL/SQL-lel . 22 Médiatartalom

importálása az adatbázisba PL/SQL-lel . 22 interMedia kivételek kezelése PL/SQL-ből. 23 Oracle interMedia - 2 3.16 3.17 3.2 3.21 3.3 3.31 3.32 3.33 3.34 3.35 3.36 3.4 3.41 3.42 3.43 3.44 Multimédia attribútumok kitöltése közben fellépő hiba kezelése . 24 Multimédiatartalom feldolgozása közben fellépő hiba kezelése . 24 PL/SQL Web alkalmazás fejlesztése . 24 A PL/SQL Gateway és a PL/SQL Web Toolkit használata . 25 Java kliens alkalmazás fejlesztése JDBC-vel . 27 A Java környezet beállítása . 27 Médiatartalom lekérdezése Javával . 27 Médiatartalom feltöltése Javával . 28 interMedia Java kivételek kezelése . 31 Multimédia attribútumok kitöltése közben fellépő hiba kezelése . 32 Multimédiatartalom feldolgozása közben fellépő hiba kezelése . 32 Java alapú webes alkalmazás létrehozása interMedia használatával. 33 Médiatartalom lekérdezése Java alapú webes alkalmazások esetén . 33 A média URL . 33 Az adatközvetítő

komponens . 34 Médiatartalom feltöltése Java alapú alkalmazásban . 35 4. KÉPEKBEN TALÁLHATÓ METAADATOK HASZNÁLATA . 38 4.1 Metaadatokra vonatkozó koncepciók . 38 4.2 Az Oracle interMedia metaadatokra vonatkozó koncepciói . 38 4.3 Támogatott fájlformátumok . 38 4.4 Metaadatok tárolásának formátumai. 38 4.41 4.42 4.43 Metaadat tárolás EXIF formátumban . 39 Metaadat tárolás IPTC-IIM formátumban . 39 Metaadat tárolás XMP formátumban . 39 4.5 Metaadatok tárolása a képfájlon kívül. 39 4.6 Példa kép metaadatok használatára . 39 4.61 4.62 4.63 4.7 4.71 4.72 Tábla készítése a metaadatok tárolására . 39 Metaadatok kinyerése . 40 Metaadatok beágyazása . 41 DICOM metaadatok tárolása és elérése . 43 Tábla készítése DICOM metaadatok tárolására . 44 DICOM metaadatok kinyerése . 44 5. A TARTALOMALAPÚ VISSZAKERESÉS KONCEPCIÓI . 46 5.1 A tartalomalapú visszakeresés előnyei . 46 5.2 A tartalomalapú visszakeresés

működése . 47 5.21 5.22 5.23 5.3 5.31 5.32 5.33 5.34 Szín. 48 Textúra . 49 Forma . 50 Az összehasonlítás menete . 50 Súlyozás . 50 Pontozás . 50 A hasonlóság fokának kiszámolása . 51 A küszöbérték. 52 5.4 Index használata szignatúrák összehasonlítására . 53 5.5 Képek előkészítése és szelekciója a hatékonyabb összehasonlítás érdekében . 54 Oracle interMedia - 3 5.51 5.52 5.53 Első példa . 55 Második példa . 56 Harmadik példa . 57 6. INTERMEDIA MINTAALKALMAZÁS . 59 6.1 Oracle környezet installációja . 59 6.11 6.12 6.2 Az adatbázisszerver installációja. 60 Manuális konfiguráció. 69 A Mediaapp alkalmazás . 71 6.21 A táblák létrehozása 71 6.22 Interfész 74 6.23 Megvalósítás 75 6.231 Saját típusok 76 6.232 A print html header eljárás 76 6.233 A print html footer eljárás 76 6.234 A print error eljárás 76 6.235 A print uploaded eljárás 77 6.236 A print photo album eljárás 77 6.237 A print

audio album eljárás 77 6.238 A print video album eljárás 77 6.239 A print metadata eljárás 77 6.2310 A get preferred format függvény 78 6.2311 Az insert new photo eljárás 78 6.2312 Az insert new audio eljárás 79 6.2313 Az insert new video eljárás 79 6.2314 A compare photos eljárás 79 6.2315 A view upload form eljárás 80 6.2316 A view photo album eljárás 80 6.2317 A view photo entry eljárás 80 6.2318 A view photo upload form eljárás 80 6.2319 A view photo compare form eljárás 81 6.2320 A view audio album eljárás 81 6.2321 A view audio entry eljárás 81 6.2322 A view audio upload form eljárás 81 6.2323 A view video album eljárás 81 6.2324 A view video entry eljárás 82 6.2325 A view video upload form eljárás 82 6.2326 A view menu eljárás 82 6.2327 A deliver photo eljárás 82 6.2328 A deliver audio eljárás 83 6.2329 A deliver video eljárás 83 7. IRODALOMJEGYZÉK . 84 8. MELLÉKLET . 85 Oracle interMedia - 4 1.

Bevezetés A multimédia tartalmak mennyisége napjainkban ugrásszerűen növekszik. Az internetes kép-, hang- és mozgóképmegosztó szolgáltatások egyre nagyobb népszerűségnek örvendenek. Ennek a tendenciának természetes következménye az az igény, hogy a médiatartalmakat logikus módon, könnyen visszakereshetően tároljuk. A hagyományos, fájlalapú tárolás már nem alkalmas ennek az igénynek a kielégítésére. Szükség van egy olyan eszközre, mely képes a multimédiás tartalmakat relációs módon, adatbázisban tárolni. Egy ilyen konkrét eszköz az Oracle által kifejlesztett Oracle interMedia. A dolgozat első fejezetében általános leírást adok az Oracle interMediáról, bevezetem a megértéséhez szükséges fogalmakat (pl.: objektum-relációs technika), definiálom a multimédiás adatokat, ahogyan az interMedia értelmezi őket. Áttekintem, hogyan tárolja az interMedia a médiatartalmat az adatbázisban, valamint hogy milyen módon válnak

utólag elérhetővé és visszakereshetővé ezek a tartalmak. Röviden átveszem, hogyan került integrálásra az interMedia az Oracle adatbázis-kezelő rendszerbe. Érintőlegesen tárgyalom az interMedia bővítési lehetőségeit is. A második fejezetben programozás-technikailag tárgyalom az interMediát. A fő irányvonalat a PL/SQL és a Java nyelvek adják. Leírom, hogy milyen eszközökkel, milyen módszerrel lehetséges a tartalmak tárolása és visszakeresése. Különböző importáló és exportáló módszereket tárgyalok, valamint szó esik a kivételkezelésről és a speciális interMedia kivételosztályokról is. A harmadik fejezetben a képek metaadatainak különböző típusaira, ezek automatikus kinyerésére és tárolására fókuszálok. Röviden kitekintek az interMedia orvosi felhasználásának lehetőségére, a DICOM objektumokra. A negyedik fejezetben a képek tartalomalapú visszakeresésének koncepcióiról beszélek. Szó esik az ilyen

típusú visszakeresés előnyeiről, működéséről, a keresés tetszés szerinti súlyozásának módjáról, a képek szignatúrájának jelentőségéről, valamint bemutatok néhány példát a tartalomalapú visszakeresés korlátait és erősségeit illusztrálandó. Az utolsó fejezet egy konkrét interMedia alkalmazás megvalósításáról szól. Leírom a szükséges Oracle szoftverkomponensek installálásának módját, majd tárgyalom a példaalkalmazás felépítését, a szükséges adatbázis-táblák sémáját, valamint a program használatának módját. Oracle interMedia - 5 2. Az Oracle interMedia 2.1 Általános Oracle interMedia leírás Az Oracle interMedia egy új, az Oracle adatbázis-kezelő rendszer által nyújtott szolgáltatás, mely lehetővé teszi kép, zene, videó és egyéb heterogén médiatípusok tárolását, karbantartását és visszakeresését. Az új funkció integrálva lett a rendszer többi komponenséhez, mely komponensek

egymással kommunikálhatnak, használhatják egymás szolgáltatásait. Az Oracle interMedia kiterjeszti az Oracle adatbázis-kezelő rendszer multimédiás tartalmakkal kapcsolatos megbízhatósági és rendelkezésre állási tényezőit. Segítségével javítható az Oracle-t bevezető cégek internetes megjelenése, elektronikus kereskedelme és médiatartalmakkal gyakran operáló szoftvereinek fejlesztése. Az Oracle interMedia nem támogatja a különböző médiaállományokat készítő és megjelenítő eszközöket. Ezirányú tevékenységek elvégzéséhez különálló szoftvereket kell igénybe venni. Amire az Oracle interMedia alkalmas: multimédiás tartalmak tárolása és lekérdezése média- és alkalmazás-metaadatok karbantartása az ismert multimédiás formátumok kezelése médiaadatok elérése hálózaton vagy interneten keresztül lekérdezés relációs módszerrel lekérdezés metaadatok alapján lekérdezés speciális médiaadat-indexelésen

keresztül 2.2 Objektum-relációs technológia Az Oracle adatbázis-kezelő rendszer egy objektum-relációs adatbázis-kezelő rendszer. Ez azt jelenti, hogy túl a relációs módszer által nyújtott biztonságos és hatékony adatbáziskezelésen, a rendszer lehetőséget biztosít új adattípusok definiálására, beleértve a típushoz tartozó saját adattagok, valamint az adattagokon értelmezett metódusok létrehozását is. Az objektum-relációs technológia szerves része a BLOB-ok (Binary Large Object-ek) használatának támogatása, melyben tárolhatók például hanganyagok, képek, videók. Ezeknek a típusoknak a tárolására az interMedia saját osztályokat definiál a következőképpen: ORDAudio: hanganyagok tárolására ORDDoc: heterogén adatok tárolására ORDImage: képanyagok tárolására ORDVideo: mozgóképanyagok tárolására Mind a négy osztálynak van egy ORDSource típusú adattagja, mely a médiaanyag eredetének információit tárolja.

2.3 Az interMedia lehetőségei Az Oracle interMedia multimédiás adatok tárolását, lekérdezését, karbantartását és manipulációját biztosítja egy Oracle adatbázisban. Egy multimédiás programnak a programmal szemben támasztott általános követelményeken túl sok esetben speciális igényeknek is meg kell felelnie. Az interMedia Oracle interMedia - 6 objektumok megfelelő használatával ezek a speciális igények könnyen kielégíthetők. Maga az objektum kezelhető egyszerű adattagként. Az interMedia-t egy programozási nyelv kétféleképpen érheti el: relációs úton, illetve az objektumok interfészén keresztül. Javás, C++-os, vagy tetszőleges harmadik generációs (3GL) nyelven írt adatbázis-kezelő program képes kommunikálni az interMedia objektumokkal azok interfészén keresztül, vagy kezelheti ezeket az objektumokat relációs módon PL/SQL-ből vagy Oracle Call Interface-en keresztül (OCI). Az interMedia támogatja az olyan,

általánosan elterjedt médiaformátumok adatbázisban való tárolását, mint a kép-, hang- és mozgóképanyagok. Lehetővé teszi ezen objektumoknak a táblák megfelelő típusú mezőibe való beszúrását. Ennek segítségével egy adatbázisprogramozó multimédiás tartalmakkal egészítheti ki a már meglévő adatbázis sémáit, vagy készíthet speciális, multimédiás tartalmakat karbantartó szoftvereket. Az interMedia a Java és C++ objektumaihoz hasonló objektumtípusokat használ a multimédiás tartalmak leírására. Az objektumosztályok nevei: ORDAudio, ORDDoc, ORDImage és ORDVideo. Ezeknek az osztályoknak egy konkrét előfordulása (egyede) attribútumokból (metaadatokból és magából a médiaadatból) és metódusokból áll. A metaadatok a médiaanyagról tárolnak információkat (pl.: hossz, tömörítési metódus, formátum, stb.), a metódusok végrehajtható műveleteket jelölnek az objektum adatain (pl: tartalomlekérdezés,

tulajdonság-beállítás, stb.) A különböző interMedia osztályok médiatartalom-tárolási módszerük megegyezik. Általában a relációs adatbázis-kezelő rendszerekből jól ismert BLOB típust használják a médiaadat tárolására. Ennek a módszernek az előnye, hogy az adatbázis-kezelő rendszer beépített tranzakció-kezelő mechanizmusa kezelni tudja ezeket a multimédiás tartalmakat. Lehetőség van a tartalomnak egyéb módszerrel való tárolására is, az adatbázis-szerveren kívül. Ebben az esetben az adatbázis egy mutatót tárol a tényleges multimédiatartalomra, mely lehet: fájlalapú objektum (BFILE) egy HTTP alapú link egy felhasználó által definiált, speciális multimédiaadat-szerver vagy egyéb szerver A médiaadatoknak az adatbázison kívüli tárolásának lehetőségével a rendszer egy kényelmes módszert biztosít nagy mennyiségű médiatartalom egy helyen való tárolására, logikai rendszerezésére, egyszerű

karbantarthatóságára. Amennyiben ezeket az adatokat tranzakciós módszerrel szeretnénk kezelni, akkor egyszerűen importálni kell őket az adatbázis BLOB mezőibe. A médiatartalmakhoz tartozó metaadatok az adatbázisban vannak tárolva, melyet az interMedia tart karban. Amikor valamilyen médiás tartalom kerül tárolásra (akár az adatbázisban, akár azon kívül, a fent leírt módszerek valamelyikével), az interMedia automatikusan elkészíti a tartalmat leíró metaadatokat, és tárolja azokat. Ezek a metaadatok a következőket tárolják: a médiás tartalom tárolásával kapcsolatos információkat, beleértve a tartalom forrását, nevét, valamint a tárolás belső illetve külső voltát az utolsó (a médiatartalmon alkalmazott) módosítás idejét hang- és mozgóképanyag leírását a médiás tartalom adatformátumát a médiás tartalom MIME típusát (Multipurpose Internet Mail Extension) a hanganyag tulajdonságaival kapcsolatos adatokat

(kódolás típusa, csatornák száma, mintavételezési gyakoriság, a minta mérete bájtban, tömörítés típusa és lejátszási idő) a képanyag tulajdonságaival kapcsolatos adatokat (szélesség, magasság, a kép mérete bájtban, a kép formátuma és a tömörítés típusa) Oracle interMedia - 7 a mozgóképanyag tulajdonságaival kapcsolatos adatokat (képszélesség, képmagasság, a kép felbontása, képfrissítési gyakoriság, lejátszási idő, tömörítés típusa, színek száma és bitráta) további, médiatípustól függő, XML-ben tárolt adatok (pl.: mozgóképanyag esetén a rendező vagy a producer neve, stb.) A képi tartalmak metaadatainak tárolásán túl a rendszer néhány képmanipulációs eszközt is a felhasználó rendelkezésére bocsát. Lehetőség van formátumot cserélni, tömöríteni, átskálázni, képet vágni, másolni, tükrözni, forgatni és fényerőt beállítani. Az interMedia szolgáltatási köre bővíthető. Az

alapértelmezett formátumok, tömörítő és kódoló algoritmusok kiegészíthetőek újakkal. Ez a lehetőség az interMedia szélesebb körű alkalmazhatóságát segíti elő. Az interMedia nem egy végfelhasználói szoftvertermék, hanem a médiaadatokkal Oracle interMedia-n keresztül manipuláló alkalmazások egy alkotóeleme. Objektumokon és relációs adatbázis-kezelési módszereken keresztül nyújt lehetőséget a multimédiás adatok elérésére, kezelésére. Csak néhány, a lehetséges alkalmazási területek közül: egészségügyi adatok tárolása elektronikus formában telefonközpontok raktárkészlet-nyilvántartás távoktatás digitális galériák, egyéb digitális művészeti tevékenységek kép-archiválás webes tartalomkezelés mozgókép és hanganyag áruházak a világhálózaton 2.4 Hanganyagok 2.41 Digitális hanganyag Az ORDAudio osztály valósítja meg a digitális hanganyagok tárolását, lekérdezését és karbantartását az

adatbázisban. A hanganyag származhat valamilyen felvevő készülékből, mikrofonból, valamilyen digitális médiából, illetve lehet egy algoritmus által előállított is. Az analóg hanganyagot digitálissá kell konvertálni. Egy ilyen konverzió mindig jellemezhető a kódolás típusával, formátumával, a csatornák számával, a mintavételi frekvenciával, a minta méretével, a tömörítés típusával és a hanganyag hosszával. 2.42 A hanganyag komponensei A digitális hanganyag két részből áll: magából a digitális hanganyagból, valamint a hanganyag tulajdonságait leíró attribútumokból. Egy hanganyagokkal operáló szoftver gyakran további, speciális adatokkal egészíti ki ezeket az attribútumokat (pl.: a hanganyag leírása, a rögzítés ideje, előadója, stb.) Ezek az adatok tárolhatók az adatbázisban a megfelelő tábla új mezőjeként, illetve lehetnek a hanganyaghoz tartozó új attribútumok is. A digitális hanganyagok a rögzítés

módszerétől függően eltérhetnek egymástól formátumukban, kódolási és tömörítési típusukban, mintavételezési frekvenciájukban, a minták méretében és lejátszási hosszukban. Az ORDAudio osztály képes automatikusan kinyerni a legfőbb metaadatokat az ismert formátumú hanganyagokból, valamint el tudja menteni az alkalmazás-specifikus, a hanganyaggal kapcsolatos egyéb adatokat az objektum „megjegyzés” attribútumában, XML formátumban. Az ORDAudio osztály kiterjeszthető annak érdekében, hogy több formátumot ismerjen fel, és képes legyen a metaadatokat az új formátumokból is automatikusan kinyerni. Oracle interMedia - 8 Egy digitális hanganyag bájtokban kifejezett mérete általában nagyságrendekkel nagyobb, mint a hagyományos adatbázis-objektumoké (számoké, szövegeké, stb.) Ebből kifolyólag számos különböző, speciális kódolási eljárás terjedt el, melyek célkitűzése a hanganyag méretének veszteséges vagy

veszteség nélküli csökkentése. A tömörített hanganyag kevesebb helyet foglal el a háttértárolón és kisebb hálózati terhelést okoz. 2.5 Heterogén médiaanyagok 2.51 Digitális heterogén médiaanyag Az ORDDoc osztály valósítja meg a heterogén médiaanyagok tárolását, lekérdezését és karbantartását az adatbázisban. Ez az osztály tetszőleges, heterogén médiatartalmat (úgy, mint hang, kép és mozgókép) képes az adatbázisban, azonos oszlopban tárolni. Ahelyett, hogy a különböző típusú médiatartalmakat különböző mezőkben kellene tárolni, az ORDDoc osztály lehetőséget biztosít ezeknek a tartalmaknak egyetlen mezőben való tárolására. 2.52 A heterogén médiaanyag komponensei A digitális heterogén médiaanyag két részből áll: magából a digitális tartalomból, valamint a tartalom tulajdonságait leíró attribútumokból. A heterogén médiaanyag – a tartalmat generáló szoftvertől függően – különböző

formátumú lehet. Az interMedia az általa ismert összes formátumot tudja tárolni és kezelni ORDDoc típusú objektumokat olyan alkalmazásokban szoktak használni, melyben különböző típusú médiás tartalmakat akarnak kezelni azonos mezőben. Ezzel a módszerrel a különböző típusú tartalmak metaadataiból egy közös metaadat-halmazt lehet felépíteni. Ennek a közös metaadat-halmaznak a segítségével lehetőség nyílik a tartalmak között keresni, függetlenül a tényleges tartalom típusától. Hasonló módszer nem alkalmazható különböző mezőkben vagy táblákban tárolt, illetve különböző osztályú interMediás adatokon. Az ORDDoc osztály képes automatikusan kinyerni a legfőbb metaadatokat az ismert formátumú hang-, kép- és mozgóképanyagokból, valamint el tudja menteni az alkalmazásspecifikus, a médiatartalommal kapcsolatos egyéb adatokat az objektum „megjegyzés” attribútumában, XML formátumban. Az ORDDoc osztály

kiterjeszthető annak érdekében, hogy több formátumot ismerjen fel, és képes legyen a metaadatokat az új formátumokból is automatikusan kinyerni. 2.6 Képanyagok 2.61 Digitalizált képanyag Az ORDImage osztály valósítja meg a képanyagok tárolását, lekérdezését és karbantartását az adatbázisban. Az osztály a valós világ objektumairól készült képek tárolását teszi lehetővé kétdimenziós, statikus, raszteres formában. A digitális képanyag származhat dokumentum- vagy képszkennerből, valamilyen videóból (digitális videokamerából vagy utólag – valamilyen módon – digitalizált analóg kamerából), egyéb speciális képtároló eszközből, illetve lehet algoritmus által előállított is. A digitalizáló eszközök az analóg jelet (mint például a kamerába eső fényt) kétdimenziós digitális képpont-vektorrá alakítják át. A képpontokat pixelnek nevezzük. Oracle interMedia - 9 2.62 A képanyag komponensei A

digitális képanyag két részből áll: magából a digitális tartalomból, valamint a tartalom tulajdonságait leíró attribútumokból. Egy képanyagokkal operáló szoftver gyakran további, speciális adatokkal egészíti ki ezeket az attribútumokat (pl.: a fénykép készítőjének neve, a kép leírása, a készítés ideje, a képen látható személyek neve, stb.) Ezek az adatok tárolhatók az adatbázisban a megfelelő tábla új mezőjeként, illetve lehetnek a képanyaghoz tartozó új attribútumok is. A képanyag pixelei különböző mélységűek (bit/pixel) lehetnek attól függően, hogy milyen módon lett a kép digitalizálva. A képpontok tárolásának szervezési módját nevezzük a kép formátumának. Az ORDImage osztály tetszőleges képformátum tárolását és lekérdezését támogatja, de csak az általa is ismert formátumok metaadatait tudja automatikusan kinyerni. Egy digitális képanyag bájtokban kifejezett mérete általában

nagyságrendekkel nagyobb, mint a hagyományos adatbázis-objektumoké (számoké, szövegeké, stb.) Ebből kifolyólag számos különböző, speciális kódolási eljárás terjedt el, melyek célkitűzése a képanyag méretének veszteséges vagy veszteség nélküli csökkentése. A tömörített képanyag kevesebb helyet foglal el a háttértárolón, és kisebb hálózati terhelést okoz. Veszteségmentes tömörítés esetén, a kitömörítés után az eredmény bitről bitre megegyezik az eredeti képpel. Ezzel ellentétben a veszteséges tömörítés esetén, kitömörítés után a kép nem egyezik meg az eredetivel teljes mértékben. Az algoritmusok megpróbálnak úgy dolgozni, hogy az eredeti és a kitömörített kép közötti különbség olyan mértékű legyen, melyet az emberi szem már nem képes érzékelni. Természetesen a veszteséges tömörítő módszerekkel – tömörítés szempontjából – nagyobb hatásfokot lehet elérni. A digitális képekkel

operáló programok gyakran különböző formátumú képeket hoznak létre. Természetes igény, hogy ezek a különböző formátumok egymásnak valamilyen módon megfeleltethetők legyenek. Ennek módszere általában egy dinamikus könyvtár létrehozása a program képformátumának kezeléséhez. Ezek a könyvtárak meghatározzák a kép tárolási módját, tömörítését, a kép attribútumait. Ezeken az információkon keresztül egy adott formátumú kép egy másik formátumra konvertálható. Egy ilyen dinamikus könyvtár általában egy fájlban helyezkedik el, melyet a programok megoszthatnak egymással, mintegy protokollt hozva létre ezáltal az adott formátum kezelésére. Az ORDImage osztály képes tetszőleges formátumú kép tárolására, de csak az általa (protokollokon keresztül) ismert formátumok metaadatait tudja automatikusan kinyerni. 2.63 A képanyag metaadatai Az Oracle adatbázis 10g verziójának második kiadásától (Release 2) kezdve

lehetőség van az ORDImage osztály saját metaadatainak kiegészítésére alkalmazás-specifikus metaadatokkal. Ezek a speciális adatok a standard interMediás módszerrel kezelhetők annak ellenére, hogy maga a metaadat nem a képanyaggal egy helyen, a közös objektumban van tárolva. A metaadat elérhető az adatbázisból, indexelhető, és értelmezhető rajta keresés az Oracle adatbázis-kezelőnél megszokott módszerekkel. Ugyancsak a 10g verzió második kiadásától kezdve a képanyaghoz tartozó metaadatok kiegészíthetők úgynevezett DICOM objektumokkal (Digital Imaging and Communications in Medicine). Ezeket a képekhez rendelt objektumokat az interMedia felismeri, és képes a hozzájuk tartozó attribútumokat (pl.: beteg neve, kórokozó neve, stb) automatikusan kinyerni. 2.64 A metaadat kinyerése Az interMedia lehetőséget biztosít a multimédiás anyagokhoz tartozó formátum- és tartalom-metaadatok kinyerésére. Összegyűjti és rendszerezi a

metaadatokat egy XML sémájú, CLOB típusú mezőben. Ha ezeket a metaadatokat tároljuk, akkor indexelhetővé Oracle interMedia - 10 válnak, tematikus és szöveges keresést lehet rájuk értelmezni az Oracle Text típusával analóg módon. Ezzel a módszerrel már relációs úton is tudunk multimédiás tartalmat keresni az adatbázisban. 2.65 Képfeldolgozás Az interMedia lehetőséget biztosít a képanyagok különböző formátumokra való konvertálására, képek vágására, átskálázására és miniatűrizált képek létrehozására (thumbnail). Amennyiben a kép formátuma tömörítetlen (pl: Windows Bitmap (BMPF), RAW Pixel (RPIX)), úgy az interMedia további operátorokat is rendelkezésre bocsát a kép karakterisztikájának megváltoztatására. 2.66 Tartalomalapú keresés képek között Az interMedia lehetőséget biztosít – a metaadatok között való keresés mellett – tartalomalapú keresésre. Ez azt jelenti, hogy a keresés a

képanyagokról készített indexen megy végbe. Ehhez bevezettek egy új, ORDImageSignature nevű osztályt, mely a képanyag bittérkép szintű indexelését kezeli. Ez az osztály az Oracle-nek csak az Enterprise kiadásában elérhető. 2.67 Az SQL/MM Still Image szabvány támogatása Az interMedia támogatja az „ISO/IEC 13249-5: 2001 SQL MM Part 5: Still Image” (röviden: „SQL/MM Still Image”) szabvány első verzióját, mely a képanyag tulajdonságainak leírására definiálja a következő osztályokat: SI StillImage, SI AverageColor, SI Color, SI ColorHistogram, SI FeatureList, SI PositionalColor és SI Texture. A szabvány nem definiálja a következő, az interMedia által biztosított lehetőségeket: az adatbázison kívül is tárolható a multimédiás anyag az ORDImage osztály speciális képfeldolgozó lehetőségei (pl.: átskálázás, tömörítés, stb.) Java kliens API képek összehasonlítása a kép tartalmának alakja alapján képtartalom

indexelése (átlagszín, textúra, színhisztogram alapján) Továbbá, az SI Score osztály kép-összehasonlító metódusai rosszabb hatékonysági mutatókkal rendelkeznek, mint az ORDImageSignature hasonló célú metódusai. 2.7 Mozgóképanyagok 2.71 Digitalizált mozgóképanyag Az ORDVideo osztály valósítja meg a mozgóképanyagok tárolását, lekérdezését és karbantartását az adatbázisban. A mozgókép származhat valamilyen videófelvevőből, videokamerából, digitalizált animációs filmből, egyéb speciális mozgóképtároló eszközből, illetve lehet algoritmus által előállított is. A digitalizáló eszközök az analóg jelet (mint például a mágnesszalagon lévő képkockákat) digitálissá alakítják át. A digitalizált mozgóképanyag jellemző tulajdonsága a formátum, a kódolás típusa, a képméret, a képfrissítési frekvencia, a kép felbontása, az anyag hossza, a tömörítés típusa, a színek száma és a bitráta. 2.72 A

mozgóképanyag komponensei A digitális mozgóképanyag két részből áll: magából a digitális tartalomból, valamint a tartalom tulajdonságait leíró attribútumokból. Oracle interMedia - 11 Egy mozgóképanyagokkal operáló szoftver gyakran további, speciális adatokkal egészíti ki ezeket az attribútumokat (pl.: a mozgókép leírása, producer neve, stb) A mozgóképanyagok rögzítési módjuktól függően eltérhetnek egymástól formátumukban, tömörítési típusukban, képfrissítési frekvenciájukban, képméretükben, képfelbontásukban, lejátszási idejükben, színeik számában és bitrátájukban. Az ORDVideo osztály minden, az interMedia által ismert képanyag-formátumot képes tárolni és visszakeresni. Lehetőség van továbbá a metaadatok automatikus kinyerésére, az alkalmazás-specifikus metaadatok XML formátumban való tárolására a megjegyzés attribútumban, valamint az ORDVideo osztály kiegészíthető annak érdekében, hogy

több mozgókép formátumot ismerjen fel. Egy digitális mozgóképanyag bájtokban kifejezett mérete általában nagyságrendekkel nagyobb, mint a hagyományos adatbázis-objektumoké (számoké, szövegeké, stb.) Ebből kifolyólag számos különböző, speciális kódolási eljárás terjedt el, melyek célkitűzése a mozgóképanyag méretének csökkentése. A tömörített anyag kevesebb helyet foglal el a háttértárolón, és kisebb hálózati terhelést okoz. 2.8 Multimédiás anyag tárolása és lekérdezése 2.81 Általános leírás Tetszőleges multimédiás anyag tárolható interMedia objektumként, BLOB-ként, illetve BFILE-ként. Az interMedia célja a BLOB-os és a BFILE típusú tárolás kiváltása Előnye, hogy további, a médiaanyaggal kapcsolatos szolgáltatásokat nyújt, melyek az osztályok interfészein keresztül érhetők el. Ezeknek a kiegészítő szolgáltatásoknak bizonyos része azonban a nem-interMedia típusú tárolás mellett is

elérhetők. Az interMedia lehetőséget nyújt a programozó számára, hogy az interMedia osztályok statikus metódusait értelmezze BLOB-okon vagy BFILE-okon. Például a lokális fájlszerveren tárolt médiaanyag importálható az adatbázisba, a médiaanyag metaadatai automatikusan kinyerhetők az ismert formátumokból és akár menthetők is egy CLOB típusú mezőbe, XML formátumban. Ezzel a módszerrel a programozónak nem kell megváltoztatnia egy már meglévő alkalmazás adatbázis-tervét, nem kell a meglévő típusait lecserélnie interMedia típusokra. A statikus metódusok segítségével még képmanipulációs lehetőségeket is igénybe lehet venni (vágás, átskálázás, tömörítés és formátum konverzió). Minden interMediás objektumnak van egy ORDSource típusú attribútuma, mely a médiás tartalom konkrét tárolási helyét hivatott reprezentálni. Ezt az objektumot használják az interMediás objektumok a médiatartalom manipulációjára,

általában mint az alkalmazandó metódus egyik paramétere. 2.82 Multimédiás anyag tárolása Az interMedia kétféleképpen képes tárolni a médiás tartalmakat. Az első módszer, amikor a médiatartalom úgynevezett belső, BLOB típusú mezőben van tárolva. Erre a tárolási módra értelmezhető a tranzakciós kontextus. A másik módszer esetében a médiás tartalom külsőleg (az adatbázison kívül) van tárolva. Ez lehet valamilyen lokális fájl, egy HTTP-szerveren URL segítségével elérhető hely, vagy egy felhasználó által definiált média-szerver. Ezzel a tárolási módszerrel logikailag jól elkülöníthető az adatbázis és a médiás tartalom. Ellene szól azonban, hogy a tranzakciós kontextus csak az adatbázison belüli elemekre értelmezhető, melyen – ebben az esetben – a médiás tartalmak kívül esnek. Egy Oracle adatbázisban a BLOB típusú mezők tárolása oly módon történik, hogy a mező elérése hatékony, a tárterület

kihasználása optimális legyen. A nagyméretű BLOB mezőket nem lehetséges egy sorban tárolni a tábla többi mezőjével, mert ez ellentmondana a BLOB mezőkkel szemben támasztott második kritériumnak. Kizárólag a maximum 4 kilobájt méretű Oracle interMedia - 12 BLOB-okat lehet a sorokon belül tárolni. Ezért – amennyiben a BLOB mező mérete meghaladja a 4 kilobájtot – a táblába a megfelelő mezőbe egy mutató érték kerül, mely rámutat arra a másik tablespace-ben levő tartalomra, mely a BLOB mező tartalma lenne. Egy ilyen BLOB tartalom az Oracle adatbázisban akár 4 gigabájt méretű is lehet. Amikor a felhasználó sorokat kérdez le egy táblából, melynek BLOB mezői is vannak, akkor a táblában ténylegesen tárolt mutató mező transzparens módon viselkedik abban az értelemben, hogy a mutatóérték helyett a felhasználó a valódi BLOB tartalmat fogja a lekérdezése eredményeképpen megkapni. Ennek a tárolási módszernek az az

előnye, hogy egy sorban akár több BLOB típusú mező is definiálható (pl.: ha egy oktatási anyagokat tároló táblában szerepel az oktatási anyag mozgóképen, egy rövid hanganyag az oktatás tematikájáról, egy kép a szerzőről, valamint néhány térképrészlet az oktatóközpontok elérhetőségéről). Mivel a BFILE-ok nem esnek a tranzakciós kontextus hatálya alá, ezért a felhasználók megváltoztathatják a hivatkozott tartalmat az adatbázis karbantartása nélkül, ezáltal inkonzisztenciát idézve elő. Az interMedia objektumok úgynevezett „wrapper method”-okat biztosítanak a következő tevékenységek végrehajtására: a médiás tartalom külső vagy belső tárolásának megadása az objektum utolsó módosításának megadása külső tárolási mód esetén a tartalom elérésével kapcsolatos adatok megadása (hely, név) tartalom exportálása az adatbázisba, illetve importálása az adatbázisból a multimédiás tartalom adatainak

lekérdezése (méret, tárolás helye, a BLOB mutató értéke) a multimédiás tartalom másolása egy megadott BLOB mezőbe a multimédiás tartalom törlése a multimédiás tartalom megnyitása, olvasása, írása, trimmelése és bezárása 2.83 Multimédiás anyag lekérdezése Attól kezdve, hogy a multimédiás tartalom az adatbázisban van tárolva, lehetőség van annak lekérdezésére a tábla többi alfanumerikus mezője, illetve a multimédiás objektum valamely attribútuma alapján. Például visszakereshető egy mozgóképes tartalom, melynek az a címe, hogy „Oracle interMedia alapok”. A multimédiás anyagok közötti keresésre három lehetőség adott: a kigenerált metaadatok alapján a tábla többi mezőjén keresztül, relációs módszerrel tartalom alapján (pl.: képek közötti keresés tartalom-alapú módszerrel, a tartalmon értelmezett speciális index segítségével) 2.9 Multimédiás anyag importálása az adatbázisba A multimédiás

anyagok akkor kezelhetők a legkönnyebben, ha a tartalom magában az adatbázisban van tárolva. Ez növeli a rendszer megbízhatósági, skálázhatósági és rendelkezésre állási mutatóit. Nagy mennyiségű multimédiás tartalom importálására a következő eszközök adottak: Oracle interMedia - 13 Eszköz SQL*Loader PL/SQL Leírás Oracle eszköz, mely lehetővé teszi adat (multimédiás adat) külső fájlból történő importálását egy Oracle adatbázistábla (interMediás osztály típusú) mezőjébe. Az SQL procedurális kiegészítése, az Oracle negyedik generációs programozási nyelve. Segítségével megvalósíthatók olyan eljárások, melyek a lokális fájlrendszerből, BLOB-ból vagy URL-ről feltöltik a multimédiás tartalmat az adatbázisba. Az SQL*Loader használata jóval egyszerűbb, nem igényel komolyabb programozói tudást. A PL/SQL használatának előnye, hogy a programozó az importálással egyidőben elvégezhet bizonyos

további, a médiatartalommal kapcsolatos tevékenységeket (pl.: kicsinyített kép készítése, metaadatok kinyerése, stb.) 2.10 A multimédiás anyag elérése A különböző szoftverek SQL, PL/SQL, OCI, illetve Java használatával érhetik el és manipulálhatják az interMediás osztályokat. A következő alfejezetek áttekintik, hogy milyen módon tudnak a szoftverek és fejlesztő eszközök hozzáférni az interMediás objektumokban tárolt multimédiás tartalmakhoz. 2.101 Oracle interMedia Java osztályok 2.102 Folyam (stream) tartalom elérése Oracle adatbázisból Az Oracle interMedia Java osztályai lehetővé teszik tetszőleges rétegben futó (kliens, alkalmazás-szerver, illetve adatbázis) Java program számára, hogy hang, kép, mozgókép vagy heterogén médiaadatot manipuláljon az adatbázisban. Ezen osztályok segítségével a JDBC (Java Database Connectivity) által visszaadott eredményhalmazok nem csak relációs, hanem interMedia típusú

adatokat is tartalmazhatnak. Ez a lehetőség interMedia objektumok könnyű elérését és karbantarthatóságát biztosítja tetszőleges alkalmazás számára. Elérhetővé válnak az objektumok attribútumai, meghívhatók lesznek az objektumok publikus metódusai. Az interMedia segítségével hang és mozgóképanyagok streamelhetők Oracle adatbázisból. Ehhez a megfelelő beépülő modult (plug-in) kell telepíteni az interMedia alá, mely támogat valamilyen „streaming server” technológiát, azaz képes a multimédiás tartalmat a kliens felé közvetíteni, mely kliens valamilyen böngészőbe integrált folyamlejátszó segítségével képes a multimédiás tartalmat lejátszani, illetve megjeleníteni. Az Oracle interMedia pillanatnyilag a „RealNetworks Streaming Servers” és a „Microsoft Windows Media Services” technológiát támogatja szabványos beépülő modulokon keresztül. A RealNetworks beépülője lehetővé teszi a stream szerver számára,

hogy a kliens médialejátszója felé áramló adat közvetlenül egy Oracle adatbázisból származzon. Maga a beépülő a RealNetworks Streaming Serverrel egyidőben automatikusan települ, beállításain változtatni a szerver adminisztrációs eszközein keresztül lehetséges. Médiakezelése formátumfüggetlen, azaz tetszőleges, a stream szerver által ismert formátum tárolható az Oracle adatbázisban. A Microsoft beépülőjének is az az alapkoncepciója, hogy a médiás tartalom a stream szerver számára az Oracle adatbázisból származzon. A beépülőt tartalmazó csomag feltelepít egy „Plug-in Property Page”-nek nevezett beállítás-kezelő felületet, melyet a szerver adminisztrációs felületéről lehet elérni. Segítségével a felhasználó úgynevezett „mount Oracle interMedia - 14 point”-okat definiálhat, melyek az Oracle adatbázisban a médiás tartalom elérhetőségére mutatnak. Ezeknek a pontoknak a segítségével a stream szerver

URL alapú folyamelérési pontokat definiál, melyeken keresztül a Microsoft Media Player lejátszó az Oracle adatbázisból származó médiás tartalmat elérheti és lejátszhatja. 2.103 Webes technológiák támogatása Az interMedia webes technológia támogatásán keresztül könnyen integrálhatóvá válnak a multimédiás tartalmak és a webes vagy Javás programok. Lehetőség nyílik multimédiaadatok lekérdezésére, tárolására és karbantartására. Az Oracle interMedia Java osztályok servletekhez és JSP-khez (Java Server Pages) lehetővé teszi multimédiás tartalom exportálását és importálását az adatbázisba (interMediás osztálytípusokba), valamint támogatja az interMediás objektumok elérését. Ezen túlmenőleg, lehetőséget biztosít médiás tartalmak fel- és letöltésére BLOB típusú mezőkön keresztül. Az OrdHttpResponseHandler osztály képes multimédiás adatokat kinyerni az Oracle adatbázisból, majd azt továbbítani egy

böngésző (vagy más HTTP kliens) felé Java servleten keresztül. Az OrdHttpJspResponseHandler osztály ugyanerre képes, JSP-vel A HTML-űrlap alapú médiatartalom-feltöltés az adatot úgynevezett „multipart/form-data” formátumra kódolja, és ezt próbálja meg kézbesíteni (postolni) az adatbázis felé. Az OrdHttpUploadFormData osztály azt a műveletsorozatot hivatott végrehajtani, mely során a form mezői és a feltöltendő fájlok egy Java servlet vagy egy JSP számára kezelhető formátumra konvertálódnak. Maga a fájlfeltöltés az OrdHttpUploadFile osztályon keresztül történik, mely tulajdonképpen egy könnyen kezelhető API (Application Programming Interface) hang, kép, mozgókép vagy heterogén médiaadat adatbázisba való feltöltésére. Az Oracle Application Server Portal vállalkozások portáljának elkészítésére szolgál. Egyik alapvető szolgáltatása az úgynevezett portletek készítésének lehetősége, amelyek tetszőleges típusú

adat kényelmes elérését, megjelenítését segítik elő. Ezek az adatok természetesen multimédia típusú adatok is lehetnek. Az Oracle Application Server Portal komponensei interfészt biztosítanak a programozó számára olyan objektumok deklarálásához, melyekkel manipulálni lehet az adatbázistáblából vagy nézetből lekért adatokat. Ezeknek a komponenseknek az interakciói segítségével olyan webes program hozható létre, melyek közvetlen kapcsolatban állnak az adatbázissal. Mivel az interMedia objektumok az adatbázisban vannak tárolva, ezért ezeken a komponenseken keresztül médiatartalmak elérése és manipulációja is megoldható. Két Oracle Application Server Portal komponens van előre definiálva: a Forms és a Reports. A portálon – akár varázslók segítségével – könnyen készíthető olyan űrlapfelület, mely az adatbázis egy vagy több táblájának adatait képes manipulálni. A Forms komponens ehhez a felülethez készít egy

korszerű, szabvány webes külsőt, melyen lehetőség nyílik adat lekérésére, beszúrására, karbantartására és törlésére. Médiás tartalom importálására és exportálására is fel van készítve, amennyiben a lekért adattábla valamely mezője interMedia típusú. A Reports komponens egy adatbázistáblából az űrlap, mint szűkítő feltétel által meghatározott rekordhalmaz táblázatos formában való megjelenítésére alkalmas. Médiás tartalom megjelenítésére, letöltésére is alkalmas. A Formshoz hasonlóan a Reports komponens kényelmes használatához is igénybe lehet venni varázslókat. A médiatartalmakkal gyakran operáló webes alkalmazások gyors fejlesztésének elősegítésére az Oracle az Oracle JDeveloper IDE-t (Integrated Development Environment) ajánlja. Használatával a programozó külsejében jól megszerkesztett, többszálú, komponensalapú webes felületet készíthet. Az Oracle Application Development Framework Business

Components (ADF Business Components) a JDeveloper egyik komponense, mely Oracle interMedia - 15 általános szoftver-építőelemeket tartalmaz. Az Oracle interMedia/ADF Business Components integrációs csomag média-specifikus domain-osztályokat és eszközöket tartalmaz. Ezek a domain-osztályok az interMedia Java osztályainak wrapper osztályaiként funkcionálnak, és képesek kezelni a médiaadatok lekérdezésére, feltöltésére és manipulációjára alkalmas metódusokat. Az ADF Business Components eszközei is tulajdonképpen osztályok, melyek magát a lekérdezést, feltöltést és manipulációt végzik az adatokon. A domain-osztályok és az eszközök együttesen egy teljes értékű, integrált fejlesztői környezetet biztosítanak médiatartalmakkal gyakran operáló alkalmazások készítésére. 2.104 hez Az interMedia Custom Datasource és Datasink osztályai JMF- 2.105 Az interMedia és a JAI Az Oracle interMedia Custom Datasource és Datasink

osztályai a Sun Microsystems által fejlesztett JMF (Java Media Framework) 2.0/21-es verziójának kiegészítői Segítségükkel egy JMF alapú alkalmazás képes lesz ORDAudio és ORDVideo típusú anyagokat fel- és letölteni Oracle adatbázisba. Az Oracle interMedia Java osztályai három folyamkezelő osztályt definiálnak, melyek interfészt biztosítanak a JAI (Java Advanced Imaging) számára BLOB, BFILE és interMedia típusú adatok eléréséhez. Egy JAI program ezáltal képes lesz írni és olvasni képadatokat az adatbázisból. 2.11 Az interMedia architektúrája Az interMedia egy integrált kiegészítése az Oracle adatbázisnak, mely lehetővé teszi kép, hang és mozgóképanyagok tárolását és karbantartását, valamint segíti a webes alkalmazásokat a multimédiás adatok kezelésében. Az interMedia architektúrája meghatározza azt a keretrendszert, melyen keresztül a multimédiás és a standard relációs adatok elérhetők az adatbázisból.

Segítségével a tartalom biztonságos módon megosztható bármennyi, tetszőleges programozási nyelven írt szoftver között. Az adatok könnyen karbantarthatók és adminisztrálhatók a relációs módszerek alkalmazásával. Mindez egy olyan adatbázis-kezelő rendszerre van alapozva, melyet egyszerre akár több ezer felhasználó is használhat. Az első ábrán látható a keretrendszer hármas tagozódása: adatbázis réteg (Oracle Database) alkalmazás-szerver réteg (Oracle Application Server) kliens réteg (vékony- és vastagkliens) Oracle interMedia - 16 1. ábra Az első rétegben az Oracle az interMedia segítségével multimédiás tartalmakat tárol az adatbázis tábláiban, a standard adatok mellett. Egy, az adatbázisba integrált Java virtuális gép végzi a médiatartalmak elemzését, a képek feldolgozását. Az elemzőnek mind objektumorientált, mind relációs interfésze is van, támogatja a multimédiás metaadatok kinyerését, és

kiterjeszthető annak érdekében, hogy minél több formátumot felismerjen. A képfeldolgozó egység alapját a JAI képezi, ezen keresztül képes képformátumok konvertálására, miniatűrizált (thumbnail) képek létrehozására, képek indexelésére és egyezésének vizsgálatára. Az interMedia metódusainak használatával lehetővé válik az importálás és exportálás az adatbázis és a kliens gép fájlrendszere között. Ezen felül az interMedia képes arra, hogy távolról kapcsolódó kliens számára folyamszerver (streaming server) szolgáltatónak tűnjön. A RealNetworks-höz, illetve a Windows Media Services-hez tartozó beépülő modulokon keresztül a médiás tartalom közvetlenül kerülhet a klienshez az adatbázisból, RTSP (RealTime Streaming Protocol) protokollon keresztül. Lehetőség van külső média-feldolgozó egység importálására az adatbázisba. Ilyen lehet például egy szövegfelismerő egység, mely a médiás tartalomból kinyert

adatokat el tudja tárolni az adatbázisban. A középső rétegben az Oracle Application Server elérést biztosít az interMediás tartalmakhoz az osztályok metódusain keresztül. Ennek segítségével tetszőleges rétegben elhelyezkedő Java program képes lesz elérni és manipulálni az interMediás tartalmakat. Az „Oracle interMedia Java Classes for Servlets and JSP” segíti a médiatartalmak adatbázisba való feltöltését, és onnan való letöltését. Képes közvetlenül elérni interMedia objektumként, BLOB-ként vagy BFILE-ként tárolt médiás adatot. Oracle JDeveloper segítségével is lehet médiatartalmakkal operáló Java szoftvert készíteni. Ennek a módja az interMedia/ADF Business Components integrációs csomag használata. Az interMediás tartalom Oracle Portals riport vagy form alá is integrálható, melyet ezután közzé lehet tenni portletként. Oracle interMedia - 17 A PL/SQL fejlesztői környezetben lehetőség van olyan webes

applikáció írására, mely kizárólag az Oracle Application Server-t és az Oracle adatbázist használja. Ez az Oracle HTTP Server PL/SQL Gateway (mod plsql) és a PL/SQL Web Toolkit eszközök segítségével érhető el úgy, hogy a programozó olyan PL/SQL servleteket és PL/SQL server pages-eket ír, melyek az adatbázisban tárolt PL/SQL eljárásokat hívnak Oracle Net kapcsolaton és OCI-n keresztül. A harmadik rétegben a lokális média-feldolgozás Oracle interMedia Java osztályokon, JAI-n és JMF-en keresztül lehetséges. Utóbbi kettő API-kat bocsát a programozó rendelkezésére a médiaanyag manipulálására, az interMedia Java osztályok pedig a médiatartalom elérését biztosítják. 2.12 Az Oracle interMedia bővítése Az Oracle interMedia a következő célok elérése érdekében bővíthető ki: Médiaadatok olyan külső forrásból való elérése, mely eddig nem volt támogatott (azaz nem BLOB, BFILE vagy URL) Új médiaformátum bevezetése

Hang- és mozgóképanyagok speciális feldolgozása (pl.: hangfelismerés) Oracle interMedia - 18 3. Alkalmazás-fejlesztés Oracle interMedia használatával Alkalmazás-fejlesztés Oracle interMedia használatával kétféleképpen lehetséges: klasszikus kliens-szerver architektúrával (két rétegű alkalmazás), illetve többrétegű alkalmazásként. Mindkét módszer esetén a programlogika az alkalmazás szerver rétegen fut, szorosan integrált az Oracle adatbázisszerverhez, és lehetővé teszi a felhasználó számára, hogy a munkaállomásukról (desktop) egy webböngésző segítségével használják a program szolgáltatásait. Az osztályok interfészei által definiált fejlesztői keretrendszer használatával az interMedia akár produkciós rendszerkörnyezetben is biztonsággal alkalmazható. A felhasználók az alkalmazásokat a böngészőn vagy az Oracle által nyújtott kliens felületen keresztül érhetik el. Az Oracle különböző,

protokoll-specifikus fejlesztői eszközöket nyújt az olyan webes alkalmazások fejlesztésének gyorsítása érdekében, melynek egyes komponensei működésének alapjait standard protokollok képezik (TCP/IP, HTTP, HTML, XML, XHTML). Ezeknek a fejlesztő eszközöknek a használatával könnyebb és gyorsabb a programozó számára az alkalmazás fejlesztése. Az Oracle interMedia a következő módon segíti elő az alkalmazás-fejlesztést: Osztálykönyvtárakat bocsát rendelkezésre az adatbázisban tárolt tartalom elérésére és manipulációjára. Az elérés a következőképpen történhet: o Oracle interMedia Java osztályokon keresztül. A Java adatbázis-kapcsolati interfészének (JDBC) használatával könnyen fejleszthető olyan, tetszőleges rétegben futó alkalmazás, mely képes manipulálni az adatbázisban tárolt képeket, hang- és mozgóképanyagokat, valamint heterogén médiatartalmakat. Az interMedia Java osztályok használatával a JDBC

lekérdezések eredményhalmazai a relációs adatokon kívül interMedia típusú adatokat is tartalmazhatnak, mely által az eredményhalmazon egyszerűen végezhetők el különböző manipulációs, attribútum elérési és metódushívási műveletek. o Oracle interMedia Java osztályok Servletekhez és JSP-khez használatával. Ezek az új Java osztályok a webes technológiákat támogatják. o Az interMedia és Oracle Application Development Framework Business Components (ADF Business Components) integrációs csomag használatával. A csomag tartalmazza az interMedia osztályokat, valamint néhány további segédprogramot. Az osztályokat az Oracle JDeveloper-en keresztül lehet elérni Ez egy Javás fejlesztői környezet, az ADF környezetet kiegészítése. Segítségével több rétegen futó, komponens alapú webes alkalmazások fejleszthetők. o Az Oracle interMedia DataSource és DataSink osztályain keresztül. Ezek az osztályok a JMF 2.0/21 kiegészítései, melyek

lehetővé teszik egy JMF alkalmazás számára, hogy feltöltsön illetve lekérjen multimédiás tartalmat az adatbázisban ORDAudio-ként vagy ORDVideo-ként tárolt adatokból. o Java Advanced Imaging osztályok használatával. Az interMedia Java osztályok három különböző folyamosztályt írnak le, melyek interfészt szolgáltatnak BLOB és BFILE típusú adatok elérésére JAI-n keresztül. Egy JAI-s alkalmazás ezeken az osztályokon keresztül képes lesz írni és olvasni az adatbázisban ORDImage-ként, BLOB-ként vagy BFILE-ként tárolt kép tartalmakat. o Oracle Application Server 10g Multimedia Tag Library for JSP használatával. Ez a könyvtár az Oracle interMedia Java osztályok Servletekhez és JSP-khez Oracle interMedia - 19 kiegészítése. Ez JSP tageket definiál, melyek egyszerűsítik a médiás tartalmak adatbázisba való fel- és letöltését JSP-s webes alkalmazásokban. o Tetszőleges harmadik generációs programozási nyelven keresztül. Az

interMedia tartalmak azok interfészein keresztül elérhetők. Az Oracle HTTP Server PL/SQL gateway (mod plsql) szolgáltatásának, valamint az Oracle Application Server és az Oracle adatbázis PL/SQL Web Toolkit szolgáltatásának használatával készíthető olyan alkalmazás, mely figyeli a böngészőből érkező kéréseket, és ezek hatására képes az adatbázisban tárolt PL/SQL programokat futtatni, majd Oracle Net vagy OCI alkalmazásával olyan válasz HTML oldalt generálni, melyet a böngésző képes megjeleníteni. Egy webes alkalmazásfejlesztő készíthet olyan PL/SQL servletet vagy PSP-t, mely képes az adatbázisban tárolt PL/SQL kódot Oracle Net kapcsolaton vagy OCI-n keresztül futtatni. Integrálhatóvá tesz olyan Oracle fejlesztő eszközöket, melyek komponensei képesek a multimédiás adatok elérésére, manipulálására, böngésző és tetszőleges kliens program felé való továbbítására. Az integrálható fejlesztő eszközök a

következők: o Oracle Application Server Portal. Ez egy egyszerű, böngészőalapú környezet EIP-k (Enterprise Information Portlets) készítésére és közzétételére. Ezek a portletek képesek az adatbázisban tárolt PL/SQL utasítások futtatására, melyek HTTP típusú eredményt generálnak egy HTML oldal formájában. Az Oracle Application Server Portalnak két előre definiált komponense van: a Forms és a Reports. Mindkettő képes médiatartalom mozgatására az adatbázis és a portál szerver Forms vagy Reports felülete között. o Oracle JDeveloper. Ez egy Javás fejlesztőeszköz, mely az Oracle ADF Business Components-et egészíti ki. Az interMedia és ADF Business Components integrációs csomag interMedia osztályokat és néhány segédprogramot tartalmaz. Az osztályok az interMedia Java osztályok úgynevezett wrapperei, melyek öröklik a multimédiás tartalmakra vonatkozó lekérdező, feltöltő és manipulációs metódusokat. Az osztályok

interfészei az ADF Business Components API-jában vannak felhasználva, ezzel biztosítva a szabványos médiatartalom-elérést. Ezen felül definiálva vannak úgynevezett segédosztályok, melyek a média elérését, használatát és feltöltését hivatottak elősegíteni. o Oracle Designer. Az Oracle Designer egy eszköz, mellyel menedzselhető a szoftvertermék fejlesztése. Ez magába foglalja a szoftverkomponensek azonosítását, bevezetését, evaluációját, jogosultság-ellenőrzését és implementációját. Az Oracle Designer képes olyan C++ osztályok generálására, mely osztályok felhasználásával írt program számára lehetővé válik interMedia osztályok metódusainak hívása függetlenül attól, hogy a program hol fut (kliens gépen, Oracle Application Server-en vagy Oracle adatbázisban). o Oracle Content Management SDK. Segítségével tetszőleges fájlrendszeren futó, XML és Java értelmezésére alkalmas program képes lesz használni az

adatbázist, többféle webes interfészt (pl.: Java Servletek és JSP-k), végrehajthat SQL utasításokat, vagy hívhat PL/SQL-ben írt tárolt eljárásokat az adatbázis tranzakciós kontextusán belül. Integrálhatóvá teszi az adatbázisban tárolt médiás tartalmat folyamszerverek számára, melyeken keresztül a tartalom egy médialejátszó számára közvetlen módon lesz elérhető. A következő folyamszerverek támogatottak: o Oracle interMedia beépülő RealNetworks Server-hez. Ez egy adatforráskomponens, mely segítségével a RealNetworks szerver közvetlen módon férhet hozzá az adatbázisban tárolt tartalomhoz. A beépülő együtt települ a Oracle interMedia - 20 folyamszerverrel, konfigurálása a folyamszerver eszközeivel történhet. A beépülő formátumfüggetlen, azaz tetszőleges, a folyamszerver által ismert formátumú médiatartalmat képes folyamátvitellel hozzáférhetővé tenni. o Oracle interMedia beépülő Microsoft Windows Media

Serverhez. Ez az eszköz lehetővé teszi a Microsoft Windows Media Server számára, hogy az Oracle adatbázisból közvetlenül, folyam formájában közvetítse az adatot a kliens gép felé. A beépülő automatikusan települ Windows 2003 Server alá, és a Windows Media Services-en belül konfigurálható. 3.1 PL/SQL kliens alkalmazás fejlesztése PL/SQL API-val A PL/SQL egy olyan sokoldalú, hordozható fejlesztő eszköz, mely ötvözi az SQL nyelv adatmanipulációs lehetőségeit a procedurális nyelvek adatfeldolgozó erejével. Ebben a fejezetben röviden áttekintjük, hogyan lehet kezelni az interMedia osztályokat PL/SQL API-n keresztül. A következő osztályok érhetők el PL/SQL-ből: ORDAudio ORDDoc ORDImage ORDImageSignature ORDVideo A hozott példák az Oracle adatbázis-kezelő rendszer installációjakor automatikusan létrejövő sémákra épülnek. 3.11 Felkészülés az interMedia használatára PL/SQL-ből Ahhoz, hogy a PL/SQL állományokat

érhessen el a lokális fájlrendszeren, létre kell hozni egy könyvtárobjektumot az adatbázisban, melyből az Oracle olvashat és írhat. A következő utasítás létrehozza a MEDIA DIR nevű könyvtárobjektumot: CREATE DIRECTORY MEDIA DIR AS c:oracleproduct10.20db 1demoschemaproduct media; Ahhoz, hogy a megadott könyvtárba az Oracle írni tudjon, az ezt kezdeményező felhasználónak írási jogosultsággal kell rendelkeznie az adott könyvtárobjektumra. Egy ilyen jogosultság megadási módja: GRANT WRITE ON DIRECTORY MEDIA DIR TO SCOTT; Hasonlóképpen, ha az adott könyvtárból importálni akar a felhasználó az adatbázisba, akkor rendelkeznie kell az adott könyvtárra mutató könyvtárobjektumra vonatkozó olvasási jogosultsággal. A megadás módja: GRANT READ ON DIRECTORY MEDIA DIR TO SCOTT; 3.12 Médiatartalom lekérdezése PL/SQL-ből Lehetőség van a médiatartalomra vonatkozó attribútumok lekérésére egy standard SQL lekérdezésen belül az objektum

metódusain keresztül (úgynevezett accessor methodokkal). Példa képtartalom adatainak lekérdezésére: Oracle interMedia - 21 SELECT t.product id t.product photogetHeight() t.product photogetWidth() t.product photogetMimeType() FROM pm.online media t; id, height, width, mimetype Példa hanganyag adatainak lekérdezésére: SELECT t.product id id, t.product audiogetMimeType() mimetype FROM pm.online media t; Példa mozgóképanyag adatainak lekérdezésére: SELECT t.product id id, t.product videogetMimeType() mimetype FROM pm.online media t; 3.13 Médiatartalom exportálása a lokális fájlrendszerbe PL/SQL-lel A lokális fájlrendszerbe való médiaadat exportálásához meg kell hívni a megfelelő objektum export metódusát. A következő példában a 3117-es product id-jű sorban található képanyag exportálása történik meg a MEDIA DIR könyvtárobjektum által mutatott könyvtárba, 3117.jpg néven A fájl az export metódus meghívásakor jön létre

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, 3117jpg); END; / 3.14 Médiatartalom importálása az adatbázisba PL/SQL-lel Importálásnak nevezzük azt a folyamatot, amikor a lokális fájlrendszerből egy állományt az adatbázisba másolunk. A folyamat szokásos lépései a következők: A céltáblába be kell szúrni egy új sort, miközben az objektum típusú mezőt inicializáljuk az objektum init metódusával. Az interMedia objektum import metódusával a médiatartalmat az adatbázisba másoljuk. (Még nem a táblába!) Az interMedia objektum setProperties metódusával elvégezhető az objektum attribútumainak automatikus kitöltése. A tábla megfelelő sorának karbantartásával (az objektum felülírásával) elérhető, hogy a táblában tárolt objektum konzisztens legyen. Oracle interMedia - 22 A következő példa kép-, hang- és

mozgóképanyag feltöltését mutatja be: DECLARE img ORDImage; aud ORDAudio; vid ORDVideo; ctx RAW(64) := NULL; BEGIN -- Új sor beszúrása a táblába DELETE FROM pm.online media WHERE product id = 3003; INSERT INTO pm.online media (product id, product photo, product audio, product video) VALUES (3003, ORDImage.init(FILE, MEDIA DIR, laptopjpg), ORDAudio.init(FILE, MEDIA DIR, laptopmpa), ORDVideo.init(FILE, MEDIA DIR, laptoprm)) RETURNING product photo, product audio, product video INTO img, aud, vid; -- Adat importálása az adatbázisba, az attribútumok feltöltése -- ORDImage.import meghívja a ORDImagesetProperties-t; img.import(ctx); aud.import(ctx); aud.setProperties(ctx); vid.import(ctx); vid.setProperties(ctx); -- Adatok táblába mozgatása UPDATE pm.online media SET product photo = img, product audio = aud, product video = vid WHERE product id = 3003; COMMIT; END; / 3.15 interMedia kivételek kezelése PL/SQL-ből A futási időben előforduló lehetséges hibákat

mindig kezelni kell. Ez a gyakorlat lehetővé teszi, hogy a program akkor is tovább fusson, ha valamilyen hiba adódik, valamint a felhasználó tudomást szerezhet a hiba okáról, annak javasolt kezelési módjáról. Ez a fejezet általános leírással szolgál az interMedia alkalmazások futása közben előforduló hibák kezelési módjáról PL/SQL-ben. Hibakezelésre a PL/SQL kivételblokkokat használ. A következő példa egy általános PL/SQL kivételkezelő blokk szintaxisát mutatja be: Oracle interMedia - 23 BEGIN <programlogika> EXCEPTION WHEN OTHERS THEN <kivételkezelés> END; Egy program tervezése, implementációja vagy debugolása során a fejlesztő számára kirajzolódnak azok a pontok, melyeknél a program futása megszakadhat valamilyen hiba miatt. Ezek azok a pontok, ahova kivételkezelő blokkokat kell rakni, melyek képesek a potenciális hiba alkalmazáslogikának megfelelő kezelésére. 3.16 Multimédia attribútumok kitöltése

közben fellépő hiba kezelése Ismeretlen formátumú kép importálásakor az attribútumok kinyerésére használt setProperties metódus hívásakor kivétel fog fellépni. (Azaz amikor az interMedia megpróbálja a médiatartalom elolvasása és értelmezése alapján kitölteni a tároló objektum megfelelő attribútumait.) Ennek a problémának egy lehetséges kezelése a következő: BEGIN new image.setProperties(); EXCEPTION WHEN OTHERS THEN new image.contentLength := 100; new image.mimeType := bmp; END; 3.17 Multimédiatartalom feldolgozása közben fellépő hiba kezelése Ismeretlen formátumú kép feldolgozásakor a processCopy metódus futtatásakor kivétel fog fellépni. Ennek a problémának egy lehetséges kezelése a következő: BEGIN new image.processCopy( maxScale=50,50, new thumb); EXCEPTION WHEN OTHERS THEN new thumb.deleteContent(); new thumb.contentLength := 0; END; Az ismeretlen formátum miatt a kicsinyített kép elkészítése nem fog sikerülni,

ezért a kicsinyített kép tárolására deklarált objektum médiatartalmát ki kell törölni, és a hosszát nullára kell állítani. 3.2 PL/SQL Web alkalmazás fejlesztése Az adatbázis felépítését jól ismerő SQL fejlesztő PL/SQL környezetben készíthet olyan webes alkalmazást, mely kizárólag az Oracle Application Server és az Oracle adatbázis szolgáltatásait használja. Egy ilyen PL/SQL-ben elkészített webes alkalmazás PL/SQL csomagokból áll, mely csomagok a böngészővel HTTP-n keresztül interakcióba lépő tárolt eljárások implementációit tartalmazzák. A tárolt eljárásokat többféleképpen lehet lefuttatni: Oracle interMedia - 24 Hypertext linken keresztül, mely kiválasztásakor meghívja a tárolt eljárást Egy HTML form Submit gombjának megnyomásával A felhasználó egy listából paraméterértékeket választhat ki a tárolt eljárás futtatásához A tárolt eljárás által generált információ (tipikusan HTML tagek) a

böngészőben weboldalként jelenik meg. Az ilyen dinamikus weboldalakat az adatbázis készíti el, tartalmuk alapvetően az adatbázis tartalmától és a tárolt eljárás bemenő paramétereitől függenek. A PL/SQL-ből való HTML kimenet generálásának módjai: A PL/SQL Web Toolkit csomag megfelelő függvényeinek HTML tagek generálására való használata PL/SQL kód weboldalba való beágyazása (PL/SQL server pages) A médiatartalom HTML oldalon való megjelenítésének lépései: A médiaobjektum adatbázisból való importálása lokális objektumba A HTML gyorsítótár (cache) ellenőrzése a médiaobjektum utolsó módosításának dátuma alapján A médiatartalom konkrét tárolási helyének meghatározása az objektum adatai alapján A médiatartalom tárolási helyről való letöltése és megjelenítése 3.21 A PL/SQL Gateway és a PL/SQL Web Toolkit használata Az Oracle Application Server és az Oracle adatbázis installációjakor automatikusan

települ az Oracle HTTP Server. Ez egy Apache HTTP Server alapú HTTP szerver, mely a PL/SQL Gateway-en keresztül közvetlenül kommunikál a kliens böngészővel. Az Oracle HTTP Server alapvetően statikus HTML oldalak, képek és egyéb webes tartalmak megjelenítésére alkalmas. Különböző beépülőkön keresztül a szerver által nyújtott szolgáltatások köre bővíthető. Ezek közül az egyik az Oracle által fejlesztett mod plsql beépülő, más néven a PL/SQL Gateway. Ez látja el az adatbázisból származó adatokkal a böngészőt (tárolt eljárások használatával). A PL/SQL Gateway a kliens böngészőjéből származó, PL/SQL servlet vagy PL/SQL Server Pages formájú kéréseket kap. Ezek a kérések tárolt eljárásokhoz vannak rendelve, melyek lekérik az adatot az adatbázisból, majd a PL/SQL Web Toolkit szolgáltatásait használva generálják a válaszoldalt. A PL/SQL Web Toolkit tartalmazza a htp, htf és owa csomagokat, melyek tárolt

eljárásokon belül képesek információval szolgálni a kérésről, összeállítani a HTML tageket. Egy böngészőből származó kérés PL/SQL tárolt eljárásokon keresztüli weboldallá konvertálásának menete a következő: A böngésző egy kérést küld az Oracle HTTP Server-nek PL/SQL Server Page vagy PL/SQL servlet formájában. Az Oracle HTTP Server eljuttatja a kérést a PL/SQL Gateway-hez (mod plsql). A PL/SQL Gateway továbbítja a kérést az adatbázisnak kiegészítve bizonyos konfigurációs adatokkal, majd csatlakozik az adatbázishoz. A konfigurációs adatokat összefoglaló néven DAD-nak nevezzük (Database Access Descriptor). Az adatbázisban lévő PL/SQL eljárás generálja a HTML oldalt az adatbázis adatai és a PL/SQL Web Toolkit segítségével. A PL/SQL Gateway elküldi a választ az Oracle HTTP szervernek. Az Oracle HTTP Server elküldi a böngészőnek a választ egy formázott HTML oldal formájában. Oracle interMedia - 25 2.

ábra Egy PL/SQL fejlesztői környezetben készített webes alkalmazás a visszatérő oldal generálásakor általában a programozó által definiált linkeken túl további linkeket helyez el az oldalon. Ezekre kattintva egy újabb kérés indul az adatbázis felé a PL/SQL Gateway-en keresztül. Az erre érkező válasz is tartalmazhat nem a programozó által definiált linkeket, és így tovább. A webes alkalmazás fejlesztőjének definiálnia kell egy PL/SQL csomag specifikációt, valamint egy ezt megvalósító BODY-t, mely kettős tulajdonképpen maga az alkalmazás lesz. A specifikáció írja le azokat az eljárásokat és függvényeket, melyeket a program használni fog. A BODY rész tartalmazza az eljárások és függvények implementációját Ezek az adatbázisban tárolt csomagok interfészeiken keresztül valósítják meg az adatok lekérdezését az adatbázisból és a HTML oldal generálását. Az Oracle HTTP Server a böngészőből érkező URL-t

hozzárendeli a megfelelő PL/SQL eljáráshoz annak speciális konfigurációs információja, a DAD segítségével. A DAD tartalmazza az adatbázis alias-t, a médiás tartalom fel- és letöltésekor futtatandó eljárás nevét, a felhasználót és a jelszót. A webszerver által felismert URL-ek formátuma kötött: protocol://host name[:port number]/DAD name/[ [!] [schema name.] [package name] procedure name [?query string]] Egy webböngészőből érkező URL mindig tartalmazza az adatkapcsolat protokollját (HTTP vagy HTTPS), a kiszolgáló nevét (host name), valamint annak a portnak a számát (port number), melyen a szerver a beérkező kéréseket figyeli. Ez után következik az a virtuális elérési út, mely a DAD-hoz vezet. Az utolsó 5 paraméter közül csak a procedure name kötelező, a többi opcionális. A felkiáltójel (!) használata azt jelzi, hogy flexibilis paraméterátadási módszert szeretne használni a felhasználó. Amennyiben a sémanév (schema

name) nincs megadva, úgy ezt az információt a webszerver automatikusan megadja a felhasználói név alapján. Ha a csomag neve (package name) nincs megadva, akkor az azt jelenti, hogy a hívott eljárás önállóan működik, nem tartozik semmilyen csomaghoz. A tárolt eljárás paraméterei az eljárás neve után adhatók meg (?query string). Ezek közül a paraméterek közül az eljárás nevének mind a DAD-ban, mind az URL-ben kötelező szerepelnie. A többi négy paraméter vagy csak ezek közül az egyikben található meg, vagy egyikben sem. Oracle interMedia - 26 3.3 Java kliens alkalmazás fejlesztése JDBC-vel Egy Java-ban és JDBC-ben jártas programozó könnyen készíthet olyan alkalmazást, mely használja az Oracle interMedia Java osztályait. Az interMedia Java osztályok tulajdonképpen az interMedia adatbázis-osztályok proxy osztályai. Ezek biztosítják (JDBC-n keresztül) a hozzáférést az adatbázisban tárolt multimédiás tartalmakhoz. Az

Oracle interMedia Java osztályok az oracle.ordim* csomagban találhatók. Az osztályok elnevezési konvenciója igazodik az interMedia adatbázis-objektumokéhoz és a Javáéhoz: OrdAudio OrdDoc OrdImage OrdImageSignature OrdVideo 3.31 A Java környezet beállítása Mielőtt a programozó használni kezdi az interMedia Java osztályait, be kell állítania a fejlesztői környezetében a megfelelő Java könyvtárakat, importálnia kell a szükséges osztályokat. Ennek menete a következő: Be kell állítani a következő elemeket a fejlesztő környezet CLASSPATH környezeti változójába: o Oracle JDBC driverek (<ORACLE HOME>/jdbc/lib/ojdbc14.jar) o SQLJ futási idejű könyvtár (<ORACLE HOME>/sqlj/lib/runtime12.jar) o XDB Java könyvtár (<ORACLE HOME>/rdbms/jlib/xdb.jar) o Oracle interMedia Java kliens könyvtár (<ORACLE HOME>/ord/jlib/ ordim.jar) A Java programnak importálnia kell a megfelelő osztályokat. A java.sql csomagba foglalt

standard JDBC osztályokon túl importálni kell az Oracle JDBC kivételosztályait (oracle.jdbcOracleResultSet), valamint a kezelni kívánt médiatípus alaposztályát is (oracle.ordimOrdAudio, oracleordimOrdDoc, oracleordimOrdImage, oracle.ordimOrdVideo) 3.32 Médiatartalom lekérdezése Javával Az interMedia objektumokat egy Java-alkalmazás az interMedia proxy-objektumain keresztül érhet el. Miután a JDBC kapcsolat felépült, a következő lépésekre van szükség az adat lekérdezéséhez: Ki kell adni egy JDBC utasítást az interMedia objektumok adatbázisból történő lekérdezésére: String query = "select product photo, product audio,"+ " product video, product testimonials from" + " pm.online media where product id=3117"; PreparedStatement pstmt = conn.prepareStatement(query); Le kell futtatni a lekérdezést, és az eredményhalmazt tárolni egy lokális objektumban: OracleResultSet rset = (OracleResultSet)pstmt.executeQuery();

Az eredményhalmazból ki kell nyerni az interMedia objektumokat: Oracle interMedia - 27 if ( rset.next() ) { OrdImage imgProxy = (OrdImage)rset.getORAData( "product photo", OrdImage.getORADataFactory()); OrdAudio audProxy = (OrdAudio)rset.getORAData( "product audio", OrdAudio.getORADataFactory()); OrdVideo vidProxy = (OrdVideo)rset.getORAData( "product video", OrdVideo.getORADataFactory()); OrdDoc docProxy = (OrdDoc) rset.getORAData( "product testimonials", OrdDoc.getORADataFactory()); } A kinyert interMedia-objektumok attribútumai már lekérdezhetők a lokális objektumból: int height = imgProxy.getHeight(); int width = imgProxy.getWidth(); String audFormat = audProxy.getFormat(); String vidMimetype = vidProxy.getMimeType(); 3.33 Médiatartalom feltöltése Javával A következő lépések szükségesek médiatartalom adatbázisba való feltöltéséhez egy Javaalkalmazásból: A JDBC-objektum automatikus commitálásának

kikapcsolása a következő utasítással érhető el: conn.setAutoCommit(false); Le kell kérni a módosítandó interMedia Java-objektumokat az adatbázisból. A médiatartalom feltölthető egy táblabejegyzés már létező interMedia objektumába, vagy egy új sor beszúrásával létrejövő iniciális interMedia-objektumba is. Oracle interMedia - 28 o A következő példa egy már létező objektum felülírásának módját mutatja meg: String query1 = "select product photo," + " product audio, product video," + " product testimonials from" + " pm.online media where product id=3106" + " for update"; PreparedStatement pstmt = conn.prepareStatement(query1); OracleResultSet rset = (OracleResultSet)pstmt.executeQuery(); if ( rset.next() ) { OrdImage imgProxy = (OrdImage)rset.getORAData( "product photo", OrdImage.getORADataFactory()); OrdAudio audProxy = (OrdAudio)rset.getORAData( "product audio",

OrdAudio.getORADataFactory()); OrdVideo vidProxy = (OrdVideo)rset.getORAData( "product video", OrdVideo.getORADataFactory()); OrdDoc docProxy = (OrdDoc)rset.getORAData( "product testimonials", OrdDoc.getORADataFactory()); } rset.close(); pstmt.close(); Oracle interMedia - 29 o A következő példa egy még nem létező objektum beszúrásának módját mutatja meg: String query2 = "begin insert into pm.online media " + " (product id, product photo, product audio," + " product video, product testimonials) values" + " (3106, ordimage.init()," + " ordaudio.init(), ordvideoinit()," + " orddoc.init()) returning product photo," + " product audio, product video," + " product testimonials into ?, ?, ?, ?;end;"; OracleCallableStatement cstmt = (OracleCallableStatement) conn.prepareCall(query2); cstmt.registerOutParameter(1, OrdImage SQL TYPECODE, OrdImage. SQL NAME);

cstmt.registerOutParameter(2, OrdAudio SQL TYPECODE, OrdAudio. SQL NAME); cstmt.registerOutParameter(3, OrdVideo SQL TYPECODE, OrdVideo. SQL NAME); cstmt.registerOutParameter(4, OrdDoc SQL TYPECODE, OrdDoc. SQL NAME); cstmt.execute(); OrdImage imgProxy = (OrdImage)cstmt.getORAData(1, OrdImage.getORADataFactory()); OrdAudio audProxy = (OrdAudio)cstmt.getORAData(2, OrdAudio.getORADataFactory()); OrdVideo vidProxy = (OrdVideo)cstmt.getORAData(3, OrdVideo.getORADataFactory()); OrdDoc docProxy = (OrdDoc)cstmt.getORAData(4, OrdDoc.getORADataFactory()); cstmt.close(); Természetes követelmény, hogy ha a pm.online media tábla elsődleges kulcsa a product id mező, akkor ne létezzen még a táblában ebben a mezőben 3106-os értékű rekord. A LoadDataFromFile metódus használatával lehet feltölteni az interMedia Java osztály médiatartalom-tároló adattagját: Oracle interMedia - 30 String imageFileName = "laptop.jpg"; String audioFileName = "laptop.mpa";

String videoFileName = "laptop.rm"; String docFileName = "laptop.jpg"; imgProxy.loadDataFromFile(imageFileName); audProxy.loadDataFromFile(audioFileName); vidProxy.loadDataFromFile(videoFileName); docProxy.loadDataFromFile(docFileName); Az interMedia-objektum további adattagjainak kitöltése a setProperties metódus segítségével történhet: imgProxy.setProperties(); audProxy.setProperties(new byte[1][64]); vidProxy.setProperties(new byte[1][64]); docProxy.setProperties(new byte[1][64], true); A setProperties metódus megpróbálja felismerni a médiatartalom formátumát, és ez alapján kitölteni a megfelelő adattagokat. Amennyiben a felismerés sikertelen, akkor egy java.sqlSQLException kivétel váltódik ki A már létező táblabejegyzésbe be kell írni a médiatartalommal feltöltött lokális objektumokat: String query3 = "update pm.online media set" + " product photo=?, product audio=?," + " product video=?, product

testimonials=?" + " where product id=3106"; OraclePreparedStatement pstmt = (OraclePreparedStatement)conn.prepareStatement(query3); pstmt.setORAData(1, pstmt.setORAData(2, pstmt.setORAData(3, pstmt.setORAData(4, imgProxy); audProxy); vidProxy); docProxy); pstmt.execute(); pstmt.close(); Véglegesíteni kell a tranzakciót: conn.commit(); 3.34 interMedia Java kivételek kezelése A kivételkezelés előnyeinek leírása megtalálható PL/SQL leírás kivételkezelő fejezeténél. A Java a kivételek kezelésére try/catch blokkokat használ. Egy ilyen, úgynevezett védett blokk szintaxisa a következő: Oracle interMedia - 31 try { //programlogika } catch (exceptionName a) { //kivételkezelés } . finally { //szemétgyűjtés } 3.35 Multimédia attribútumok kitöltése közben fellépő hiba kezelése Bevezethető olyan metódus, mely a paraméterként megkapott kép objektum attribútumait tölti ki, amennyiben ez automatikusan lehetséges. A metódus

visszatérési értéke legyen az attribútumok kitöltésének sikeressége. static boolean setProperties(OrdImage img) { try { img.setProperties(); return true; } catch (SQLException e) { return false; } } 3.36 Multimédiatartalom feldolgozása közben fellépő hiba kezelése Kép objektumok kicsinyített képének automatikus létrehozásakor is keletkezhet kivétel, amennyiben a kép formátuma ismeretlen. Egy lehetséges kezelése ennek a problémának az, hogy sikertelen kicsinyített kép létrehozásakor a kicsinyített kép számára létrehozott tárhelyet töröljük. try { image.processCopy( "maxScale=50,50", thumb ); } catch ( SQLException e ) { thumb.deleteContent(); thumb.setContentLength( 0 ); } Oracle interMedia - 32 3.4 Java alapú webes alkalmazás létrehozása interMedia használatával Egy Java platformon futó webes alkalmazás tulajdonképpen a webszerver kiterjesztése, mely Java servletekből, Java Server Pages-ből, vagy a kettő

kombinációjából áll. A Java servletek olyan Java osztályok, melyek dinamikusan dolgozzák fel a HTTP kéréseket és konstruálják a HTTP választ. A Java Server Pages olyan szöveges alapú dokumentumok, melyek servletként futtathatók, ám azoknál könnyebben kezelhetők statikus tartalom létrehozására. Az Oracle interMedia Java osztályok Servletekhez és JSP-hez kiegészítés az Oracle interMedia Java osztályokra épülnek, és támogatják médiás tartalmak adatbázisba való exportálását és importálását Java alapú webes alkalmazásokban. Mint minden Oracle interMedia Java osztály, a Java alapú webes alkalmazásokat segítő osztályok is az oracle.ordim* csomagban találhatók meg. A konkrét osztályok a következők: OrdHttpResponseHandler OrdHttpJspResponseHandler OrdHttpUploadFormData OrdHttpUploadFile OrdMultipartFilter OrdMultipartWrapper Az OrdHttpResponseHandler osztály valósítja meg Java servlet használata esetén a kommunikációt az

adatbázis és a kliens gép böngészője között. JSP használata esetén ugyanezt a funkciót hivatott biztosítani az OrdHttpJspResponseHandler osztály. A maradék négy osztály a böngészőtől érkező médiás tartalmak adatbázisba való importálását oldják meg. Annak érdekében, hogy ezek az osztályok elérhetők legyenek, el kell végezni a 3.31-es fejezetben leírtakat. 3.41 Médiatartalom lekérdezése Java alapú webes alkalmazások esetén Általánosságban elmondható, hogy egy képeket tartalmazó weboldal megjelenítése pontosan kétszeri kommunikációt igényel a kliens oldali böngésző és a webszerver között. Az első kommunikáció során a böngésző elküldi a HTTP igényt a weboldalt tároló URLre. A webszerver erre az igényre a weboldal szöveges részének, valamint az oldalon megjelenő képek URL-ének visszaküldésével felel. Ez az URL az <img> tag src attribútumában található meg. A második kommunikáció során a kliens

oldali böngésző egy újabb HTTP kérvényt küld az <img> tagekben található, bináris médiaadatra mutató URL-ekre, majd megjeleníti a kapott képeket a weboldalon. Egy Java-alapú webes alkalmazás esetén a médiatartalom böngésző felé közvetítéséhez szükség van a megfelelő URL-re (az első kommunikációs fázishoz), valamint egy tartalomszállító komponensre (egy servlet vagy egy JSP a második kommunikációs fázishoz). 3.42 A média URL Amennyiben a médiaadat statikus fájlként van tárolva a szerveren, akkor a média URL a fájl relatív vagy abszolút elérési útvonala a szerver fájlrendszerében. Ha a médiatartalom adatbázisból származik, akkor a média URL a szállító komponensből (servlet vagy JSP) és a komponens paramétereiből tevődik össze. Ebben az esetben a második kommunikáció HTTP kérésének feldolgozása során az adatot maga a média komponens fogadja. A paraméterek az adat adatbázisban való megtalálására

szolgálnak. Például: Oracle interMedia - 33 <img src="OrdGetMedia.jsp?id=1"/> Az OrdGetMedia.jsp az adatközvetítő komponens, és az id=1 a paraméter 3.43 Az adatközvetítő komponens Mivel a médiatartalmak az adatbázisban interMedia-objektumokként vannak tárolva, ezért az adatközvetítő komponens a tartalmat dinamikus lekérdezése(ke)n keresztül, Javaobjektumokként tudja elérni. Az adat elérése után már akár az OrdHttpResponseHandler, akár az OrdHttpJspResponseHandler osztály használható az adat közvetítésére a HTTP kliens (böngésző) felé. Példa médiatartalom lekérdezésére servlet használatával: import oracle.ordimOrdHttpResponseHandler; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.ioIOException { // oracle.ordimOrdImage objektum lekérdezése az // imgProxy objektumba, a 3.32-as fejezetnek megfelelően . // kép adat közvetítése a böngésző felé

OrdHttpResponseHandler handler = new OrdHttpResponseHandler(request, response); handler.sendImage(imgProxy); . } Példa médiatartalom lekérdezésére JSP használatával: <%@ page import="oracle.ordimOrdHttpJspResponseHandler" %> <jsp:useBean id = "handler" scope = "page" class = "oracle.ordimOrdHttpJspResponseHandler"/> <% // oracle.ordimOrdImage objektum lekérdezése az // imgProxy objektumba, a 3.32-as fejezetnek megfelelően . // kép adat közvetítése a böngésző felé handler.setPageContext( pageContext ); handler.sendImage(imgProxy); return; . %> Oracle interMedia - 34 3.44 Médiatartalom feltöltése Java alapú alkalmazásban HTML formok segítségével lehetőség van adat feltöltésére a böngészőből a webszerverre. Példa egy fájl feltöltésére: <form action ="uploadAction.jsp" method ="post" enctype="multipart/form-data"> Id: <input type="text"

name="id"/> Description: <input type="text" name="description"/> Photo: <input type="file" name="photo"/> </form> Ebben a kódrészletben az action attribútum értéke határozza meg az adatot fogadó, szerveroldali JSP-t, az enctype attribútum pedig meghatározza az adatforgalom kódolási módszerét. Ahhoz, hogy a fogadó oldalon a servlet vagy a JSP kezelni tudja a beérkező adatot, a következő lépések szükségesek: Dekódolni kell a kapott fájlt. Mivel ebben a példában a küldött adat multipart/formdata formátumban lett kódolva, ezért a további használhatóság érdekében ezt vissza kell kódolni az eredeti formátumra. Az OrdHttpUploadFormData osztály képes a kódolt adatot OrdHttpUploadFile objektummá alakítani, mely maga a kódolatlan, eredeti fájl lesz. o Példa servlet használata esetén: import oracle.ordimOrdHttpUploadFormData; import oracle.ordimOrdHttpUploadFile;

OrdHttpUploadFormData formData = new OrdHttpUploadFormData( request ); formData.parseFormData(); String id = formData.getParameter( "id" ); String description = formData.getParameter( "description" ); OrdHttpUploadFile photo = formData.getFileParameter( "photo" ); // Feltöltött fájl feldolgozása . // Erőforrások felszabadítása formData.release(); Oracle interMedia - 35 o Példa JSP használata esetén: <%@ page import="oracle.ordimOrdHttpUploadFormData" %> <%@ page import="oracle.ordimOrdHttpUploadFile" %> <% OrdHttpUploadFormData formData = new OrdHttpUploadFormData( request ); formData.parseFormData(); String id = formData.getParameter( "id" ); String description = formData.getParameter( "description" ); OrdHttpUploadFile photo = formData.getFileParameter( "photo" ); // Feltöltött fájl feldolgozása . // Erőforrások felszabadítása formData.release(); %> Annak

érdekében, hogy ne kelljen mindig újra létrehozni és felszabadítani egy OrdHttpUploadFormData objektumot minden egyes JSP-ben és servletben (amelyik kezel formon keresztüli fájlfeltöltést), az OrdHttpUploadFormData osztály implicit módon is használható, ha az alkalmazás megfelelően példányosít egy OrdMultipartFilter objektumot. Az OrdMultipartFilter osztály képes a HTTP kéréseken keresztül érkező, multipart/form-data formátumú adatot automatikusan dekódolni, és továbbítani a megfelelő JSP vagy servlet felé. Példa az OrdMultipartFilter osztály megfelelő használatára: o Az alkalmazás web.xml konfigurációs fájlját ki kell egészíteni a következő kóddal: <filter> <filter-name>OrdMultipartFilter</filter-name> <filter-class>oracle.ordimOrdMultipartFilter</filter-class> </filter> <filter-mapping> <filter-name>OrdMultipartFilter</filter-name> <servletname>*.jsp</servletname>

</filter-mapping> Oracle interMedia - 36 o A filter konfigurációja után a form adatai a következő módon kaphatók meg servletből vagy JSP-ből: String id = request.getParameter( "id" ); String description = request.getParameter( "description" ); // request egy HttpServletRequest objektum, melyet a servlet vagy // a JSP paraméterül megkap oracle.ordimOrdHttpUploadFile photoFile = request.getFileParameter("photo"); A feltöltött fájlt el kell tárolni az adatbázisban. Az OrdHttpUploadFile objektum kinyerése után (akár explicit módon kaptuk meg, akár implicit módon, az OrdHttpUploadFormData osztály használatával) a fájl tartalma ezen az osztályon keresztül készen áll arra, hogy egy interMedia-osztályba legyen importálva. Ez a következő utasítással történhet: photoFile.loadImage(imgProxy); Itt a photoFile egy OrdHttpUploadFile objektum, imgProxy pedig egy OrdImage objektum a 3.33-as fejezetnek megfelelően

deklarálva A loadImage metódus implicit meghívja a setProperties metódust a médiatartalom attribútumainak automatikus kinyerése érdekében. Mivel most már átkerült a médiatartalom az interMedia-objektumba, ezért a megfelelő adatbázistáblában tárolhatóvá válik a feltöltött fájl, ugyancsak a 3.33-as fejezetben leírtaknak megfelelően. Oracle interMedia - 37 4. Képekben található metaadatok használata A képfájlok sok esetben tartalmaznak információt magáról a képről. Az adatot leíró adatokat metaadatoknak nevezzük. Képek esetében metaadatnak nevezzük a magára a képre vonatkozó kiegészítő információkat, melyeket a képfájl a képen kívül tartalmaz. 4.1 Metaadatokra vonatkozó koncepciók Számos metaadat-típus tárolható egy képfájlon belül, mindegyik más szereppel és jelentéssel. A technikai metaadatok valamilyen technikai jellegű információt hordoznak (pl: szélesség és magasság pixelben, tömörítés típusa,

stb.) A tartalom metaadatok a képről nemtechnikai jellegű, további információkkal szolgálnak (pl: készítő neve, kronologikus adatok a kép készítésével kapcsolatban, stb.) A metaadatokat különböző módszerekkel építik bele a képfájlba. A digitális kamerák automatikusan beszúrják a releváns adatokat az éppen mentett képbe. Digitális fényképek manipulálására specializált szoftverek (pl.: Adobe Photoshop) lehetővé teszik a képpel együtt tárolt metaadatok szerkesztését. A képek metaadatokkal való kiegészítésének lehetősége gyakran használt funkció a képszerkesztő és hírgyűjtő alkalmazásokban, valamint hasznos lehet képek archiválásakor is. A metaadatok és a kép egy fájlban való tárolása implicit beágyazást (encapsulation) eredményez. Ennek előnye, hogy a kép és a rá vonatkozó adatok egy egységként kezelhetők A képfájlon belül tárol metaadatokat beágyazott metaadatoknak nevezzük. 4.2 Az Oracle interMedia

metaadatokra vonatkozó koncepciói Az interMedia a képformátumok nagy részéhez támogatja a legalapvetőbb metaadatok kinyerését és manipulálását (pl.: magasság, szélesség, méret bájtban, fájlformátum, képformátum, MIME típus). Egy szűkebb formátumhalmaz számára azonban sokkal több metaadat-karbantartási lehetőségeket biztosít a rendszer. Ebben az esetben a metaadatok már sémaalapú XML dokumentumokban vannak tárolva, melyeket az adatbázis tárol, indexel. Lehetőség van rajtuk keresést és lekérdezést értelmezni, karbantartani és alkalmazások számára elérhetővé tenni, mindezt az Oracle adatbázis-kezelő rendszer standard eljárásain keresztül. Az interMedia képes – bizonyos fájlformátumok esetében – az adott alkalmazás által generált XML dokumentumban tárolt metaadatokat beleírni a képfájlba. 4.3 Támogatott fájlformátumok Az interMedia GIF, TIFF és JPEG fájlformátumok esetében támogatja teljes körűen a

metaadatok kinyerését és képfájlba ágyazását. 4.4 Metaadatok tárolásának formátumai A „képmetaadat-formátum” kifejezés egy gyűjtőfogalom azokra a protokollokra és technikákra, ahogy egy alkalmazás a metaadatokat a képfájlon belül tárolja. Oracle interMedia - 38 4.41 Metaadat tárolás EXIF formátumban Az EXIF (Exchangeable Image File Format) egy standard digitális állóképek fájlban való tárolására. Kidolgozója egy japán cég, a Japan Electronic Industry Development Association EXIF formátumban való metaadat-tárolás JPEG és TIFF képfájlokban valósítható meg. Az interMedia mindkét fájlformátum esetében támogatja a metaadat-kinyerést. 4.42 Metaadat tárolás IPTC-IIM formátumban Az IPTC-IIM (International Press Telecommunications Council – Information Interchange Model) egy standard, digitális állóképek fájlban való tárolására. Közös kidolgozói az International Press Telecommunications Council és a Newspaper

Associations of America voltak. Ezeknek a metaadatoknak az elsődleges célja a tömegtájékoztatással, publikálással kapcsolatos adatok tárolása. Gyakran hivatkoznak az IPTC-IIM típusú metaadatokra az IPTC tag kifejezéssel. A képfájlokba integrált IPTC tagek használata az Adobe Photoshop képmanipulációs szoftverrel együtt terjedt el. IPTC-IIM formátumban való metaadat-tárolás JPEG és TIFF képfájlokban valósítható meg. Az interMedia mindkét fájlformátum esetében támogatja a metaadat-kinyerést 4.43 Metaadat tárolás XMP formátumban Az XMP (Extensible Metadata Platform, http://www.adobecom/) egy standard metaadat formátum. Az Adobe cég dolgozta ki alkalmazások közötti metaadat-kommunikáció, metaadat-készítés és -feldolgozás céljából. Az XMP az adatok modellezésére RDF (Resource Description Framework, http://www.w3org/RDF/) technológiát használ Az XMP azt is meghatározza, hogy a metaadatok hogyan formálódjanak a képfájlban

tárolható folyammá (byte-stream). XMP formátumban való metaadat-tárolás GIF, JPEG és TIFF képfájlokban valósítható meg. Az interMedia mindhárom fájlformátum esetében támogatja a metaadat-kinyerést és a metaadatok karbantartását. 4.5 Metaadatok tárolása a képfájlon kívül A metaadatoknak a bináris képfájlból való kinyerése után a következő lépés a metaadat olyan formában történő tárolása, mely könnyen indexelhető, könnyű rajta lekérdezést értelmezni, valamint egyszerűen karbantartható. Az interMedia a képek metaadatait XML dokumentumokban tárolja, melyek sémái az interMedia installációjakor automatikusan létrejönnek. Mindegyik metaadat-formátum különböző XML sémát definiál, melyeket az ORDImage osztály metódusai használnak. Az XML dokumentumok az adatbázisban XMLType típusú mezőkben tárolhatók. Ezeken a mezőkön az Oracle XML DB által biztosított standard XML-kezelő funkciók értelmezhetők. 4.6 Példa

kép metaadatok használatára 4.61 Tábla készítése a metaadatok tárolására Mielőtt a metaadatokat kinyernénk vagy beágyaznánk a képfájlba, meg kell oldani a metaadatok tárolását. A következő utasítás egy olyan táblát definiál, mely alkalmas mind a négy interMedia metaadat formátum tárolására (metaORDImage, metaEXIF, metaIPTC és metaXMP mezők), valamint tárolja magát a képfájlt és annak kicsinyített másolatát (image és thumb mezők). A metaadat tároló mezők a név alapján azonosítható metaadat-formátumot fogják tárolni. Az XML dokumentum sémája a formátumnak megfelelő kell legyen Oracle interMedia - 39 CREATE TABLE photos( id NUMBER PRIMARY KEY, description VARCHAR2(40) NOT NULL, metaORDImage XMLTYPE, metaEXIF XMLTYPE, metaIPTC XMLTYPE, metaXMP XMLTYPE, image ORDSYS.ORDIMAGE, thumb ORDSYS.ORDIMAGE ) -- kép tárolása 32Kb-os töredékekben LOB(image.sourcelocaldata) STORE AS (chunk 32k) -- kicsinyített kép tárolása 16Kb-os

töredékekben LOB(thumb.sourcelocaldata) STORE AS (chunk 16k) -- XMLType mezőkhöz a megfelelő séma hozzákötése XMLType COLUMN metaORDImage XMLSCHEMA "http://xmlns.oraclecom/ord/meta/ordimage" ELEMENT "ordImageAttributes" XMLType COLUMN metaEXIF XMLSCHEMA "http://xmlns.oraclecom/ord/meta/exif" ELEMENT "exifMetadata" XMLType COLUMN metaIPTC XMLSCHEMA "http://xmlns.oraclecom/ord/meta/iptc" ELEMENT "iptcMetadata" XMLType COLUMN metaXMP XMLSCHEMA "http://xmlns.oraclecom/ord/meta/xmp" ELEMENT "xmpMetadata"; 4.62 Metaadatok kinyerése A következő PL/SQL eljárás kinyeri a képben tárolt metaadatokat, és a Photos tábla megfelelő mezőiben tárolja azokat. Az eljárásban használjuk a getMetadata() metódust, mely XML dokumentumok vektorát adja vissza. A dokumentumok gyökéreleme meghatározza a metaadat típusát. Az update utasítás tárolja a kinyert metaadatokat az adatbázisban, XML

dokumentum formájában. Oracle interMedia - 40 PROCEDURE extractMetadata(inID IN INTEGER) IS img ORDSYS.ORDIMAGE; metav XMLSequenceType; meta root VARCHAR2(40); xmlORD XMLType; xmlXMP XMLType; xmlEXIF XMLType; xmlIPTC XMLType; BEGIN -- Kép kiválasztása SELECT INTO FROM WHERE image img photos id = inID; -- Metaadatok kinyerése metav := image.getMetadata( ALL ); -- A visszatérő metaadat-vektor feldolgozása FOR i IN 1.metavcount() LOOP meta root := metav(i).getRootElement(); CASE meta root WHEN ordImageAttributes THEN xmlORD WHEN xmpMetadata THEN xmlXMP WHEN iptcMetadata THEN xmlIPTC WHEN exifMetadata THEN xmlEXIF ELSE NULL; END CASE; END LOOP; := := := := metav(i); metav(i); metav(i); metav(i); -- Metaadat-tároló mezők karbantartása UPDATE photos SET metaORDImage metaEXIF metaIPTC metaXMP WHERE id = inID; = = = = xmlORD, xmlEXIF, xmlIPTC, xmlXMP END extractMetadata; 4.63 Metaadatok beágyazása A következő PL/SQL kódrészlet a PutMetadata() metódus

használatát mutatja be. A metódust használó eljárásnak hat bemenő paramétere van. Az entry id nevű argumentum azonosítja a photos tábla egy sorát. A maradék öt paraméter (title, creator, date, description, copyright) szöveges típusú, és az adott kép XMP formátumú metaadat-dokumentumában kerülnek tárolásra. Az XMP formátumséma előre definiált az Oracle XML Database-ben Ez a séma az <xmpMetadata> nevű globális elemmel dolgozik, mely alatt egy jól formált RDF dokumentum lesz. Az RDF dokumentum tartalmaz egy <rdf> elemet, mely az rdf névtérből Oracle interMedia - 41 származik. Magának az RDF dokumentumnak a felépítése a Dublin Core Schema által definiált elemekből történik (http://purl.org/dc/elements/11/) A PutMetadata() metódushívás beágyazza a metaadatot a képfájlba. Az UPDATE utasítás tárolja az adatbázisban a változtatásokat (a metaadatokkal kiegészített képet és magukat a metaadatokat). PROCEDURE write

metadata( entry id title creator date description copyright img ORDSYS.ORDImage; xmp XMLType; buf VARCHAR2(5000); BEGIN IN IN IN IN IN IN VARCHAR2, VARCHAR2, VARCHAR2, VARCHAR2, VARCHAR2, VARCHAR2 ) IS -- Kép lekérdezése SELECT image INTO img FROM photos WHERE id = entry id FOR UPDATE; buf := <xmpMetadata xmlns="http://xmlns.oraclecom/ord/meta/xmp" xsi:schemaLocation="http://xmlns.oraclecom/ord/meta/xmp http://xmlns.oraclecom/ord/meta/xmp" xmlns:xsi="http://www.w3org/2001/XMLSchema-instance" > <rdf:RDF xmlns:rdf="http://www.w3org/1999/02/22-rdf-syntaxns#"> <rdf:Description about="" xmlns:dc="http://purl.org/dc/elements/11/">; IF title IS NOT NULL THEN buf := buf || <dc:title> || htf.escape sc(title) || </dc:title>; END IF; IF creator IS NOT NULL THEN buf := buf || <dc:creator> || htf.escape sc(creator) || </dc:creator>; END IF; IF date IS NOT NULL THEN buf := buf ||

<dc:date> || htf.escape sc(date) || </dc:date>; END IF; IF description IS NOT NULL THEN buf := buf || <dc:description> || Oracle interMedia - 42 htf.escape sc(description) || </dc:description>; END IF; IF copyright IS NOT NULL THEN buf := buf || <dc:copyright> || htf.escape sc(copyright) || </dc:copyright>; END IF; buf := buf || </rdf:Description> </rdf:RDF> </xmpMetadata>; -- XML dokumentum elkészítése xmp := XMLType.createXML(buf, ’http://xmlns.oraclecom/ord/meta/xmp); -- Metaadat beágyazása a képbe img.putMetadata( xmp, XMP ); -- Tábla karbantartása UPDATE photos SET image = img, metaXMP = xmp WHERE id = entry id; END write Metadata; Egy példa jól formált XMP formátumú XML dokumentumra: <xmpMetadata xmlns="http://xmlns.oraclecom/ord/meta/xmp" xsi:schemaLocation="http://xmlns.oraclecom/ord/meta/xmp http://xmlns.oraclecom/ord/meta/xmp"

xmlns:xsi="http://www.w3org/2001/XMLSchema-instance"> <rdf:RDF xmlns:rdf="http://www.w3org/1999/02/22-rdf-syntaxns#"> <rdf:Description about="" xmlns:dc="http://purl.org/dc/elements/11/"> <dc:title>A Winter Day</dc:title> <dc:creator>Frosty S. Man</dc:creator> <dc:date>21-Dec-2004</dc:date> <dc:description>a sleigh ride</dc:description> <dc:copyright>North Pole Inc.</dc:copyright> </rdf:Description> </rdf:RDF> </xmpMetadata> 4.7 DICOM metaadatok tárolása és elérése Az interMedia képes felismerni és kezelni DICOM (Digital Imaging and Communications in Medicine, http://medical.nemaorg/) objektumokat, felismerni a speciális – betegre, betegségre, orvosi eszközre, stb. vonatkozó – DICOM attribútumokat Az attribútum felismerése azt jelenti, hogy az interMedia egy binárisan tárolt adathalmazról felismeri, ha az Oracle interMedia - 43

egy DICOM objektum. Ebben az esetben a speciális attribútumok elérésére automatikusan lehetőség nyílik. Az attribútumok tárolása mind magában az ORDImage objektumban, mind direkt módon a BLOB vagy BFILE mezőben lehetséges. Egy DICOM objektum különböző típusú adatot tartalmazhat. Lehet a beteggel kapcsolatos valamilyen adminisztrációs információ, hullámforma (EKG), kép, 3 dimenziós hang, videórészlet, stb. Egy DICOM objektumnak a szabványnak megfelelő fájlfejléccel kell rendelkeznie. A DICOM szabványt bevezetését az American College of Radiology (ACR) és a National Electrical Manufacturers Association (NEMA) kezdeményezte annak érdekében, hogy a radiológiai hardvereszközök kompatibilitását növeljék. Mielőtt a DICOM széles körben elterjedt szabvány lett volna, a hardvereszközök gyártói mind saját maguk által kidolgozott képformátumot és kommunikációs protokollt használtak. Ez ellehetetlenítette radiológiai eredmények

rendszerezése vagy feldolgozása céljából készített külső alkalmazások fejlesztését. Különböző gyártótól származó eszközök együttes használata ugyancsak bonyodalmakba ütközött. Az ACR és a NEMA 1985-ben szabványosíttatta (ACR-NEMA néven) közösen kidolgozott, orvosi képek kezelésére és orvosi eszközök kommunikációjára vonatkozó publikációját. 1993-ban a szabvány felülvizsgálatra került, majd az átdolgozás és korszerűsítés után DICOM néven lett újra standard. Azóta a DICOM széles körben használt, általánosan elfogadott szabvány lett, melyet minden nagy orvosi eszközöket gyártó cég követ. 4.71 Tábla készítése DICOM metaadatok tárolására Mielőtt a DICOM metaadatokat kinyernénk, meg kell oldani a metaadatok tárolását. A következő utasítás egy olyan táblát definiál, melyben az XMLType típusú mező alkalmas a metaadatok tárolására, valamint tárolja magát a képfájlt és annak kicsinyített

másolatát (image és thumb mezők). Az XML dokumentum sémája a DICOM formátumnak kell hogy megfeleljen. CREATE TABLE medicalImages( id description metadata image thumb NUMBER PRIMARY KEY, VARCHAR2(40), XMLType, ORDSYS.ORDIMAGE, ORDSYS.ORDIMAGE ) -- kép tárolása 32Kb-os töredékekben LOB (image.sourcelocaldata) STORE AS (chunk 32k) -- kicsinyített kép tárolása 16Kb-os töredékekben LOB (thumb.sourcelocaldata) STORE AS (chunk 16K) -- XMLType mezőhöz a megfelelő séma hozzákötése XMLType COLUMN metadata XMLSCHEMA "http://xmlns.oraclecom/ord/meta/dicomImage" ELEMENT "DICOM IMAGE"; 4.72 DICOM metaadatok kinyerése A következő PL/SQL eljárás kinyeri a képben tárolt DICOM metaadatokat, és a medicalImages tábla megfelelő mezőjében tárolja azokat. Az eljárásban használjuk a getDicomMetadata() metódust, amely a metaadatokat tartalmazó XML dokumentumot adja vissza. Az update utasítás tárolja a kinyert metaadatokat az adatbázisban

Oracle interMedia - 44 PROCEDURE extractDicomMetadata(inID IN INTEGER) IS local image ORDSYS.ORDIMAGE; local id INTEGER; dicom metadata XMLType := NULL; BEGIN -- Kép kiválasztása SELECT INTO FROM WHERE image local image medicalImages id = inID; -- Metaadatok kinyerése dicom metadata := local image.getDicomMetadata(imageGeneral); -- Metaadatok tárolása, ha a kinyerés sikeres volt IF (dicom metadata IS NULL) THEN DBMS OUTPUT.PUT LINE(metadata is NULL); ELSE UPDATE medicalImages SET metadata = dicom metadata WHERE id = inID; END IF; END extractDicomMetadata; Oracle interMedia - 45 5. A tartalomalapú visszakeresés koncepciói Ez a fejezet áttekintést ad arról, miért és hogyan célszerű használni a tartalomalapú visszakeresést. Szó lesz: A tartalomalapú visszakeresés előnyeiről (5.1) Arról, hogyan működik a tartalomalapú visszakeresés, beleértve a vizuális attribútumok (szín, textúra, forma, elhelyezkedés) definícióját és

magyarázatát, valamint hogy miért hasznos a speciális attribútumok használata bizonyos esetekben (5.2) Képek összehasonlításáról speciális összehasonlító-kép alapján, beleértve a képek vizuális attribútumain értelmezett súlyozott összegek számolását, melyből meghatározható a hasonlóság hozzávetőleges foka (5.3) Indexek használatáról, melyek segítségével javítható a keresések és lekérdezések hatékonysága (5.4) Képek előkészítéséről és szelekciójáról, melyek javíthatják az összehasonlítás hatásfokát (5.5) 5.1 A tartalomalapú visszakeresés előnyei Az olcsó képrögzítő eszközöknek és tárolási technológiáknak köszönhetően ma már gyakoriak a nagyméretű képgyűjtemények. A gyűjtemény méretének növekedésével azonban egyre bonyolultabbá válik egy konkrét, vagy egy adott témával kapcsolatos kép visszakeresése. A probléma kezelésére két különböző megközelítés létezik Mindkettő a

metaadatokban tárolt információk alapján működik. A képeket tároló tábla különböző mezőiben manuálisan tárolt kiegészítő információk alapján (cím, előre meghatározott szókészlet használatával készített egyszerű leírás, előre definiált osztályozási séma, stb.) A képek tartalmára, technikai jellemzőire vonatkozó információk automatikus kinyerése (ez a tartalomalapú visszakeresés alapja) Az interMedia egy megfelelően felépített táblával mindkét megközelítést képes használni. Szöveges mezőkben tároljuk a kép szemantikai jelentését (például hogy a képen szereplő autó megnyert valamilyen díjat egy autó-kiállításon, vagy hogy 8 hengeres a motorja), az ORDImageSignature típus használatával pedig lehetővé tehető a kép lényeges attribútumain értelmezett keresés (például egy autó színe és alakja mennyire hasonlít egy konkrét autóéra). A szemantikus jelentés külön mezőkben való tárolása helyett

lehetőség van olyan összetett adattípus definiálására, mely tartalmazza magát az ORDImage objektumot (a képet), valamint a szemantikus jelentést leíró szöveges, szám- vagy dátummezőket is. A tartalomalapú visszakeresés elsődleges célja nagymennyiségű képek esetében a képeket leíró információk felvitelébe fektetett idő és energia csökkentése. A gyakran módosított, nagyméretű képadatbázisok esetében nem célszerű a képek összes metaadatának manuális felvitele. Hasznos továbbá a képeken ábrázolt objektumok alakjára és textúrájára való keresési lehetőség biztosítása, hiszen ezek az információk kulcsszavakkal nehezen leírhatók. Tipikus felhasználási területei a tartalomalapú lekérdezéseknek (ahol a „melyek azok a képek, amik hasonlítanak erre?” típusú lekérdezések gyakoriak): Emblémák, védjegyek Művészeti galériák és múzeumok Kiskereskedések Divattervezés és kézművesipar Oracle interMedia -

46 Lakberendezés Például egy divat-kiskereskedés honlapján megjelenő katalógusban – a tartalomalapú visszakeresés segítségével – lehetőség nyílik az árucikkek között a szokásos kategóriák (stílus vagy árfekvés) és képtulajdonságok (szín vagy textúra) alapján is keresni. Ez alapján akár egy olyan lekérdezés is megfogalmazható, hogy „melyek a szabványos pólók egy bizonyos árfekvésben, törtfehér színben, pöttyös mintával”. 5.2 A tartalomalapú visszakeresés működése A tartalomalapú visszakereső rendszer analizálja a megadott képet, és annak vizuális tulajdonságai alapján képez egy absztrakciót és tárolja azt. A képekre vonatkozó lekérdezések ezután már nem magukat a képeket fogják feldolgozni, hanem a képeken értelmezett absztrakt információ (tulajdonságvektor vagy szignatúra) alapján keresnek. 3. ábra 4. ábra A 3. ábrán szereplő kép színelemzés alapján elkészített szignatúrája

látható a 4 ábrán A kép a meghatározó színek, textúrák és formák alapján régiókra van osztva, mely régiók absztrakt módon leképezik az eredeti képet. A 4 ábra összesen 55 főformából (azonos színű, Oracle interMedia - 47 szomszédos pixelek halmaza) áll. Ehhez adódik hozzá a háttérből képezett információ, egy globális háttérforma, mely kicsi, sötét, diszjunkt foltokból áll össze. Ezek a kis (gyakran különböző színű) foltok nem tartoznak hozzá egyetlen főformához sem, hanem mindegyik egy úgynevezett globális háttérformaként van kezelve. A képek tartalomalapú visszakeresésekor ez a háttérforma is szerepet játszik. A régiókra vonatkozó vizuális attribútumok az adatbázisban az abszolút (képen belüli) elérési útjukkal együtt vannak tárolva. Ez a minden képre külön értelmezett szignatúra alapján már lehetőség van a képek összehasonlítására szín, textúra és forma alapján. Egy szignatúra a

következő vizuális információkat tartalmazza a képről: Attribútum Szín Leírás A különböző színek egész képre vonatkozó eloszlását tartalmazza, beleértve a színek mennyiségét is. Textúra A kép mintázatát és felületének szerkezetét reprezentálja. Tipikus példa erre a kép szemcséssége és egyenletessége. A forma attribútummal ellentétben a textúra attribútum érzékeny az olyan vizuális tulajdonságokra, melyek gyakran fordulnak elő a képen. Forma A képen előforduló, azonos színek alapján felismert régiókat reprezentálja. Elhelyezkedés A szín-, textúra- és formakomponensek abszolút helyeit írja le a képen. Egy szignatúra mérete tipikusan 3-4 kilobájt. Nagyméretű képadatbázisok esetében – performancia szempontjából – hasznos lehet szignatúra-indexek létrehozása. Az adatbázisból a képek lekérdezhetők oly módon, hogy egy konkrét alapképhez viszonyítva csak az arra hasonlító képeket adja a rendszer

eredményül. Az alapkép származhat az adatbázisból, lehet algoritmus által generált, egy vázlat vagy bármi egyéb kép. Az összehasonlító algoritmus először generálja az alapkép szignatúráját, majd megadja az alapkép és az összehasonlítandó kép egyezőségének mértékét a vizuális attribútumok súlyozott vizuális attribútum-hasonlóságának aránya alapján. Az egyezőség mértékét pontokban fejezi ki a rendszer, mely a két kép egymástól való távolságát reprezentálja. A végső egyezőségi pontszám a két kép vizuális attribútumainak pontozása alapján kerül meghatározásra. 5.21 Szín A kép szín tulajdonságát az Oracle interMedia kétféleképpen értelmezi: Módszer Szín Szín és elhelyezkedés Leírás A színek eloszlását jelöli az egész képre nézve. A színek eloszlását jelöli, azok előfordulási helyével együtt. Egy konkrét példa látható az 5. ábrán 5. ábra Oracle interMedia - 48 Amennyiben az

5. ábrán lévő két képet hasonlítanánk össze a különböző módszerek alapján, a következő lenne az eredmény: Szín Módszer Szín és elhelyezkedés Eredmény Teljes egyezés, mivel azonos színek azonos mennyiségben fordulnak elő a két képen. Teljes különbözőség, mivel nincs két azonos szín fedésben egymással, ha a két képet egymásra helyezzük. Az eredmények alapján nyilvánvaló, hogyha a képek szín szerinti dominanciája szerinti egyezőséget szeretné vizsgálni a felhasználó (például ha olyan lakást keres kép alapján, melynek a beltere kékre van festve), akkor a szín szerinti egyezőséget vizsgáló módszert kell nagyobb relatív súlyozással értelmezni. Amennyiben a kép egy adott területének domináns színével való egyezőség vizsgálata a cél (például olyan kép keresése esetében, mely naplementét ábrázol, azaz a kép felső részének meghatározó színe a piros egy árnyalata), úgy a relatív súlyozás a

szín és elhelyezkedés módszerre kell nagyobb legyen. A következő két ábra közül az első szín szerint egyező képekre ad példát, míg a második a szín és elhelyezkedés módszer esetében egyező képeket mutat be. 6. ábra 7. ábra 5.22 Textúra A textúra tulajdonság az egész kép textúráját írja le. Ez a módszer akkor igazán hatékony, ha a teljes kép textúra alapján jól besorolható egy adott csoportba (pl.: valamilyen fát, követ vagy homokot ábrázoló képek katalógusába). Az ilyen típusú kategorizálás kulcsszavak alapján nagyon nehézkes, mivel a textúrák leírására a rendelkezésre álló szókészlet nem elegendő. A textúra-tulajdonság használható a színtulajdonsággal együtt is, ilyenkor célszerű a textúrát erősebben súlyozni. A textúra-tulajdonságra értelmezhető az elhelyezkedés is, ilyenkor a képeknek az adott területen lévő textúrájuk kerül összehasonlításra. A következő ábra textúra alapján

megegyező képeket mutat be. 8. ábra Oracle interMedia - 49 5.23 Forma A formatulajdonság a képen belül felismerhető formákat reprezentálja. A képen a formákat az azonos színű, összefüggő felületek alkotják. A formatulajdonság alkalmas tájképeken belül a horizontvonal megállapítására, épületek sarkának felismerésére és olyan egyszerű objektumok megtalálására, mint például egy fa. A formatulajdonság akkor különösen hatékony, ha a programnak az ember által készített rajzokban kell felismernie az egyszerűbb objektumokat (vonal, kocka, kör). A formatulajdonságra értelmezhető az elhelyezkedés is, ilyenkor a képeknek az adott területen belül lévő formái kerülnek összehasonlításra. A következő ábra forma alapján megegyező képeket mutat be. 9. ábra 5.3 Az összehasonlítás menete Képek összehasonlításakor a vizuális tulajdonságokhoz fontossági faktort – úgynevezett súlyozást – kell hozzárendelnie a

felhasználónak. Az interMedia a végleges hasonlósági fokot – a pontozást – a súlyozott hasonlóságok alapján fogja kiszámolni. 5.31 Súlyozás A súlyozás a különböző vizuális attribútumokhoz rendelt súlyokat jelenti. A súly meghatározza, hogy a képek közötti hasonlóság megállapításakor az adott vizuális tulajdonság milyen fontossággal kerüljön számításba. Például amikor a felhasználónak az a célja, hogy a színek egyáltalán ne játsszanak szerepet az összehasonlításban, akkor a 0 súlyt kell a színhez, mint vizuális tulajdonsághoz rendelni. Amennyiben a színek – az előző esettel ellentétben – fontos szerepet játszanak a képek hasonlóságának megállapításában, akkor a színek súlyozása kell legyen a legnagyobb. A súlyértékek 0 és 1 közé eső racionális számok kell legyenek. Az előfeldolgozás során a súlyértékek normalizálásra kerülnek annak érdekében, hogy az összegük pontosan 1 egész legyen.

A szín-, textúra- és formatulajdonságok közül legalább egynek nem-nulla súlyozással kell szerepelnie az összehasonlításban. 5.32 Pontozás A képek adott vizuális tulajdonság alapján való hasonlóságának kifejezése egy 0 és 100 közé eső pontszámban realizálódik. Minél jobban hasonlít egymásra két kép az adott attribútum szerint, annál kisebb a különbözőségi pontszám. A következő ábra három kép, forma és szín szerinti összehasonlításának eredményét mutatja. Az origóban helyezkedik el az alapkép, melyhez a másik kettőt hasonlítottuk A második kép nagyban eltér forma alapján, és kis mértékben szín alapján. A harmadik kép éppen fordítva, nagy különbözőséget mutat színben, de formára közel áll az első képhez. Ezekre a relatív különbözőségi fokokra értelmezheti a felhasználó a súlyokat. Amennyiben az Oracle interMedia - 50 első és a második kép összehasonlításakor a forma tulajdonság kis

súllyal játszik szerepet, akkor a két kép nagyban hasonlónak nevezhető az adott súlyozásra. 10. ábra 5.33 A hasonlóság fokának kiszámolása A 10. ábrában bemutatott eset az interMedia által figyelembe vett összehasonlítási attribútumok közül csak kettőt használt. A valóságban az interMedia a három vizuális attribútum súlyozott értékét veszi figyelembe a hasonlóság megállapítására az adott képterületen belül, illetve az egész képfelületen. Tételezzük fel, hogy az előző fejezetben felvázolt, három képes esetben vizsgáljuk az első és a második kép egyezőségét. A következő táblázat a különböző vizuális attribútumok alapján számolt azonossági pontszámokat mutatja, melyet úgy kaphatunk meg, ha mindegyik attribútumot külön, teljes súlyozással vesszük figyelembe egy összehasonlításban, a másik két attribútumot teljesen figyelmen kívül hagyva. Az egyszerűség kedvéért az attribútumokat ebben a

példában elhelyezkedés nélkül, azaz a teljes képre értelmezzük. Attribútum Szín Textúra Forma Távolság 15 5 50 Az értékek alapján a két kép a leginkább textúra alapján hasonlít egymásra, a legnagyobb különbözőség pedig forma alapján van. Tegyük fel, hogy a következő táblázat alapján súlyozzuk az összehasonlítást. A súlyok összege 1 egész, ezért normalizálásra nincs szükség. Attribútum Szín Textúra Forma Súly 0,7 0,2 0,1 A képek egymástól való távolságát az adott súlyozásra a következő formula számolja: Oracle interMedia - 51 távolság = szín súly * szín távolság + textúra súly * textúra távolság + forma súly * forma távolság Ebben a konkrét esetben a távolság számolása: 0,7 * 15 + 0,2 5 + 0,1 50 = 16,5 A helyes súlyozás fontosságának demonstrálására vegyük most azt az esetet, amikor a súlyokat az adott attribútumokhoz fordítva adjuk meg, azaz: Attribútum Szín Textúra Forma Súly

0,1 0,2 0,7 Ebben az esetben a számolás: 0,1 * 15 + 0,2 5 + 0,7 50 = 37,5 Ebben a második esetben a két kép hasonlósági mutatója rosszabb, mint az első esetben, hiszen a számolt pontérték magasabb. Az, hogy a két kép összességében véve hasonlónak mondható-e, azt a küszöbérték fogja meghatározni. Amennyiben a számolt hasonlósági pontérték alacsonyabb, mint a küszöbérték, akkor a két kép megegyezik. Ellenkező esetben a két kép különbözik. A két különböző súlyozás esetében a felhasználó szempontjából a különbség a vizuális attribútumokban való hasonlóság fontosságában mutatkozik meg. Az első súlyozáskor a színattribútum játszik döntő szerepet, a többi attribútum csak elhanyagolható mértékben számít bele a hasonlósági kalkulációba. Erre a súlyozásra a két kép jóval inkább hasonlít egymásra, mint a második súlyozás esetében, ahol a formaattribútum a meghatározó. 5.34 A küszöbérték

Képek összehasonlításakor meg kell adni egy küszöbértéket. Amennyiben a két kép összehasonlításakor keletkező pontszám nem nagyobb, mint a küszöbérték, akkor a két kép azonosnak tekintendő, ellenkező esetben a két kép különböző. A legutolsó példát tekintve, amennyiben a küszöbérték 37,5-nél nagyobbként kerül megállapításra, akkor a két kép különbözőnek tekintendő. A következő példa egy kurzort vezet be, mely eredményként azokat a product id és product photo párosokat adja vissza az online media táblából, melyek 20-as küszöbértékkel azonosak a megadott képpel: CURSOR getphotos IS SELECT product id, product photo FROM online media WHERE ORDSYS.IMGSimilar( photo sig, comparison sig, color="0.4", texture="01", shape="03", location="02", 20)=1; Oracle interMedia - 52 A kurzor futtatását meg kell hogy előzze egy generateSignature() metódushívás az összehasonlító képre és a

tábla elemeire. Az eredményrekordok száma a küszöbérték növelésekor emelkedni fog. A küszöbérték 100-ra állításával az összehasonlítás értelmét veszti, ennek a feltételnek a tábla összes eleme meg fog felelni. Sok hasonló kép esetében meg kell próbálni csökkenteni a küszöbértéket vagy másképpen súlyozni az összehasonlítást. 5.4 Index használata szignatúrák összehasonlítására A tartományindexek és a kiterjeszthető indexek a komplex adatobjektumok könnyebb kezelése érdekében kerültek bevezetésre. Az Oracle adatbázis és az interMedia képes definiálni, felépíteni és karbantartani egy ilyen indexet. A megfelelő típus neve ORDImageIndex. Létrehozása után automatikusan frissül minden olyan esetben, amikor egy képpel kapcsolatban végrehajtódik egy karbantartó művelet. Az aktualizációt indexkezelő függvények valósítják meg. Nagyméretű adatbázisok esetében mindig célszerű indexet létrehozni a képek

szignatúráin való keresés gyorsítása érdekében. Az alapértelmezett kereső módszer lineárisan megy végig a tábla elemein, generálja a szignatúrákat, és összehasonlítja őket a megadott kép szignatúrájával. Ez sokmillió rekordos adattábla esetében nyilván nem túl hatékony megközelítés. Amennyiben azonban adott egy index a táblában tárolt képek szignatúrája alapján, akkor a keresés sokkal hatékonyabban is végrehajtható. Tegyük fel, hogy a használni kívánt tábla az online media tábla a Product Media sémából. Az index létrehozásának menete a következő: Minden képnek generálni kell a szignatúráját a generateSignature() metódus segítségével DECLARE t image ORDSYS.ORDImage; image sig ORDSYS.ORDImageSignature; BEGIN SELECT p.product photo, pproduct photo signature INTO t image, image sig FROM pm.online media p WHERE p.product id = 1910 FOR UPDATE; -- Szignatúra generálása image sig.generateSignature(t image); UPDATE

pm.online media p SET p.product photo signature = image sig WHERE product id = 1910; COMMIT; END; / Oracle interMedia - 53 Létre kell hozni az indexet a generált és a product photo signature mezőben tárolt szignatúrák alapján CREATE INDEX idx1 ON online media(product photo signature) INDEXTYPE IS ORDSYS.ORDIMAGEINDEX PARAMETERS ( ORDImage Filter Tablespace = <name1>, ORDImage Index Tablespace = <name2> ); Oracle interMedia indexekkel kapcsolatosan tudni kell: Oracle interMedia indexek létrehozásakor az index neve legfeljebb 24 karakter hosszú lehet, ellentétben az Oracle adatbázis-kezelő megszorításával, ahol 30 karakter az engedélyezett. Az index létrehozása előtt létre kell hozni két tablespace-t az index számára. Az elsőben kerül tárolásra a tényleges index a szignatúrák alapján, a második az első index indexelése. A szignatúrák átlagos hossza 350 bájt, ezért a létrehozott tablespace mérete legalább a „tábla

rekordjainak száma” * 350 bájt legyen. (ORDIMAGE FILTER TABLESPACE paraméter) A szignatúrák indexének tipikus hossza 100 bájt, ezért a létrehozott tablespace mérete legalább a „tábla rekordjainak száma” * 100 bájt legyen. (ORDIMAGE INDEX TABLESPACE paraméter) Hatékonyabb az indexet a tábla tartalommal való feltöltése és a szignatúrák generálása után létrehozni. Érdemes létrehozni az egy tranzakcióban változtatott szignatúrák maximális összmérete nagyságú rollback szegmenst. A létrehozott index a következő utasítással analizálható: ANALYZE INDEX idx1 COMPUTE STATISTICS; Az IMGSimilar és az IMGScore operátorok támogatják az indexeket. A lekérdezésben az index használatát nem kell explicit igényelni. Az Oracle optimalizáló használni fogja a tartományindexet, amennyiben az IMGSimilar operátor első paramétere egy indexelt oszlop eleme. Ellenkező esetben a szignatúrák lineárisan, sorról sorra kerülnek

összehasonlításra 5.5 Képek előkészítése és szelekciója a hatékonyabb összehasonlítás érdekében Képek összehasonlításában az emberi agy pillanatnyilag sokkal hatékonyabb, mint a számítógép. Tegyük fel, hogy egy utca szélén állva szeretnénk azonosítani a látóterünkbe eső piros autókat. Az ember számára ez a feladat nem bizonyul nehéznek, hiszen az agy könnyen meg tudja állapítani a következőket: Az adott autó mozog-e vagy megállt? Az adott piros közlekedési eszköz milyen típusú? (autó, motor, utánfutó, stb.) Mekkora az autó abszolút mérete, és mennyi a pillanatnyi – a távolságot figyelembe vett – relatív mérete? Mi az autó konkrét elhelyezkedése a látómezőnkben? (oldalt, középen, alul, felül, stb.) Mi az az irány, amerre az autó néz, illetve halad? (balról jobbra, jobbról balra, velünk szembe, tőlünk elfele, stb.) Oracle interMedia - 54 Tegyük fel most ezzel ellentétben, hogy a

számítógépnek kell megtalálnia az adatbázisban az összes piros autót ábrázoló képet (illetve az összes ilyen képet, valamint néhány olyat, mely nem piros autót ábrázol, esetleg olyan piros objektumot tartalmaz, amelyik nem autó). Ebben az esetben a kereső algoritmus csak akkor tud hatékonyan működni, ha a keresési tartományba eső képeken a piros autó a meghatározó motívum, azaz majdnem az egész kép magát az autót ábrázolja, valamint az autók ugyanabból az irányból vannak fényképezve. Ilyen esetben a színre és formára súlyozott keresés valószínűleg hatékonyan tud működni. Ha azonban az autók különböző helyeken tűnnek fel a képeken, vagy más-más méretűek, esetleg eltérő irányba néznek, akkor a tartalomalapú visszakeresés valószínűleg nem fog jól működni. A következőkben néhány olyan jó tanácsot mutatunk be, melyek segíthetik a tartalomalapú visszakeresést. Az alapelv a következő: „Tudjuk, hogy mit

keresünk, és próbáljuk meg a feltételt általánosan megfogalmazni”. Amennyiben lehetséges, vágjuk ki a képekből a lényeges részt (azaz fókuszáljunk a lényegre), mielőtt a tartalomalapú keresést elindítanánk. A keresett objektum foglalja el a kép nagy részét, vagy legalábbis minden képen legyen nagyjából megegyező méretű, és helyezkedjen el körülbelül azonos helyen. Minimalizáljuk a sikeres keresést zavaró tényezőket. Például, hogyha piros autókat keresünk, és a képeken az autó előtt áll egy személy, akkor az ő ruházata nagyban befolyásolhatja a keresés eredményét (akár színre, formára vagy alakra súlyozunk). A személy ruházatában felismert egyezések a képeken csökkenthetik a piros autóra vonatkozó keresés hatékonyságát. Amennyiben ismert, hogy a képeken a személy megjelenése gyakori, próbáljunk olyan súlyozást meghatározni, mely a lehető legtöbb jó egyezést eredményezi. Szignatúra-generálás

közben a képek átmenetileg azonos méretűre vannak kicsinyítve, illetve nagyítva. Ez a módszer homogénebbé teszi a szignatúrákat, mely miatt a keresés gyorsul és egyszerűsödik. Amennyiben kivágjuk egy kép valamely részét, majd azt az eredeti képpel összehasonlítjuk, az egyezés valószínűleg nem lesz teljes. Az átméretezés információvesztéssel jár. Az interMedia nem képes objektumok felismerésére. Például nem képes felismerni egy konkrét autót egy parkolóházról készített fényképen. Ellenben, ha kivágjuk az autókat egyenként, akkor az eredeti autóval való egyezés mértéke könnyen megkapható. Amikor egy képen sok objektum található, az interMedia akkor működik a leghatékonyabban, ha: o A képen található színek nem folynak össze o A különböző objektumok színei eltérnek egymástól o A képen egyszerű formák találhatók 5.51 Első példa A 10. ábrán bemutatott kép alapvetően egy-egy utat ábrázol Az emberi

agy a két képre nézve könnyen meg tudja állapítani, hogy mindkét kép egy utat ábrázol, és ez alapján megegyezőnek ítéli őket. Sokat segít ennek megállapításában, hogy mindkét képen maga az út van a fókuszpontban, azaz a képek lényegében magát az utat ábrázolják. Ezzel ellentétben az interMedia nem képes ennek a párhuzamnak a felismerésére, és sem szín, sem forma, sem textúra alapján nem fogja a két képet megegyezőnek találni. Oracle interMedia - 55 11. ábra A bal oldali képen az út a távolba veszik. Az út maga hosszú és egyenes, a háttérben sivár vidéki táj és a kék égbolt látható. A jobb oldali képen az út közelebb jelenik meg, az út mellett sövény látható, mely mögött egy vékony és sűrű erdősáv húzódik. Az ég csak a baloldalon, a fák között pillantható meg. Az interMedia kép-összehasonlító algoritmusa a képek vizuális attribútumain alapszik (szín, textúra és forma) és nem a képen

látható objektumok egyezőségének vizsgálatán. Ebből kifolyólag az interMedia nem fogja tudni azonosnak felismerni ezt a két képet. Először is az utak színe különböző. A bal oldali képen az útnak szürke színe van, mert a napfény megvilágítja azt. A jobb oldali képen azonban az útnak barna színe van, mivel a napfényt eltakarják a környező fák, és így csak kevés fény jut el az útig. A két képen a színek az úttól eltekintve is különbözőek. Az interMedia a következőképpen ismeri fel a bal oldali képen a színeket: a kép nagy része szürke (az út), van némi kék szín (az ég) és egy kevés aranybarna (a puszta). A jobb oldali képen ezzel ellentétben a szürkésbarna szín a meghatározó (az út), továbbá van egy kevés zöld (az út menti aljnövényzet) és némi barna (a fák törzse, ágai). Egyértelmű, hogy szín alapján a két kép különböző Másodsorban a képeken látható formák is eltérnek. A bal oldali képen az

út nagy területet foglal el a képen, és négyzetes alakú. A jobb oldali képen azonban az út kisebb területét foglalja el a képnek, és háromszög alakú, hiszen a távolban az út két oldala összemosódik. Ezért az interMedia forma alapján sem lesz képes felismerni a két kép között az egyezést. Végül a képeken megtalálható textúrákat kell megvizsgálni. Bár a két út ebből a szemszögből nagyfokú hasonlóságot mutat, az úton kívüli képrészek textúrája (az ég és az erdő) különbözők. Ebből kifolyólag a két kép textúra alapján való azonosságának felismerése is kudarcba fullad. Végeredményben egyetlen vizuális attribútum használata sem lesz eredményes az interMedia módszerével való összehasonlításkor. 5.52 Második példa Ebben a példában két virágot ábrázoló képet fogunk megvizsgálni. A két kép az interMedia összehasonlító módszerei alapján jobb hasonlósági mutatókat fog hozni, mint az előző

példában látott képek. Oracle interMedia - 56 12. ábra Mindkét kép egy-egy virágot ábrázol, körülbelül a kép közepén, zöld leveles aljnövényzettel körülvéve. A jobb oldali kép előterében egy kis madárúsztató vagy kút látható. Az interMedia a vizuális attribútumok egyezőségének vizsgálatakor a következő eredményekre jut: A háttérben lévő levelek színe megegyezik. A virágok és a háttérben lévő levelek textúrája megegyezik. A virágok színe különböző. Ezek alapján megállapítható, hogy a két kép szín alapján történő összehasonlítása részlegesen jó eredményt hozhat. Vegyük észre, hogy az összehasonlítás nem az objektumok felismerésén alapszik, azaz az interMedia nem abból indul ki, hogy a képek fő motívumai a virágok, és a hátteret mindkét képen levelek és aljnövényzet alkotják. Az interMedia szín alapján szegmentálja a képeket. Mindkét képen egy nagy, zöld terület található,

mivel a háttér mindkét képen túlnyomó részben zöld színű. A két képen kis mennyiségben találhatók egyéb színek; a bal oldali képen kék, a jobb oldali képen fehér. Ez alapján a szín szerinti összehasonlítás eredménye kedvező, hiszen a két kép szín alapján nagyjából megegyezik. Az egyezés persze nem tökéletes, hiszen a két képen jelen lévő virágok színben különböznek. Ráadásul a levelek és a virágok textúrája a két képen hasonlók, ezért a textúrára súlyozott összehasonlítás is jó eredményre juthat. 5.53 Harmadik példa Ebben a példában a két kép azonos típusú és színű virágokat ábrázol, eltérő méretben. A két kép összehasonlításakor az interMedia jobb eredményt fog tudni elérni, mint az előző két példában. 13. ábra Azonos típusú és színű virágokról készült mind a két kép. A bal oldali képen a virágok sokkal sűrűbben helyezkednek el egymás mellett, és méretük is jóval

kisebb. Ezzel Oracle interMedia - 57 ellentétben a jobb oldali képen a virágok szellősen helyezkednek el egymás mellett, nagyobb méretűek, és részleteik jobban kivehetők. Mivel a két képen látható virágok mindkét esetben nagyjából elfoglalják az egész képet, ezért az interMedia a képek szín szerinti szegmentálásakor a domináns színnek a lilát fogja meghatározni, függetlenül attól, hogy a bal oldali képen a virágok mérete jóval kisebb, mint a jobb oldali képen. A virágok az interMedia számára csak lila színű területek a képen Ebből kifolyólag a szín szerinti összehasonlítás kedvező eredményt hoz. Továbbá az interMedia azt is észreveszi, hogy a két képen a textúrák között is nagyfokú hasonlóság van. Ezek alapján egy textúrára és színre súlyozott keresés minden bizonnyal megegyezőnek fogja találni ezt a két képet. Történik mindez annak tudta nélkül, hogy a két kép virágokat ábrázol Oracle interMedia

- 58 6. InterMedia mintaalkalmazás A szakdolgozat része az interMedia funkcióinak elméleti tárgyalása után egy, azokat a gyakorlatban is bemutató alkalmazás megírása. A 3. fejezetben láthattuk, hogy az interMedia tetszőleges, korszerű alkalmazásfejlesztő rendszer alá integrálható. Ennek ellenére úgy döntöttem, hogy az általam elkészített program az Oracle PL/SQL Gatewayt fogja használni. Így a megvalósítás tisztán PL/SQL nyelven történhet, mely egy izgalmas, új aspektusa számomra a webes alkalmazásfejlesztésnek. További előny, hogy mivel a program magának az adatbázisnak része, így natív módon férhet hozzá az adatbázisban tárolt adatokhoz, a tranzakciós kontextus nem különböző nyelvi eszközökön és objektumokon keresztül érhető el, hanem a változtatásokat az alkalmazás saját maga véglegesítheti. A kiterjesztett SQL nyelv elősegíti a fejlesztést, az interMedia és a PL/SQL Gateway osztálymetódusainak helyes

kezelésével a weboldal egyszerűen felépíthető. Az alkalmazás futtatására tetszőleges böngésző alkalmas kell legyen. Ennek érdekében a generált weboldalak megfelelnek a W3C szabványnak. A program tervezésekor elsődleges szempont volt, hogy képes legyen megmutatni azokat a speciális, interMedia specifikus funkciókat és lehetőségeket, melyeket az elméleti tárgyalás során érintettünk. Az alkalmazás fő funkcióinak sematikus listája: Médiaanyagok feltöltése az adatbázisba Az adatbázisba feltöltött médiaanyagok megtekintése Az automatikusan kinyerhető metaadatok megjelenítése Képek összehasonlítása tetszőleges súlyozás alapján A lista alapján kézenfekvő választás egy olyan katalogizáló alkalmazás megvalósítása, mely képeket, hang- és mozgóképanyagokat képes kezelni webes felületen. 6.1 Oracle környezet installációja Az installációt Windows XP Professional rendszerre fogjuk elvégezni. Az operációs rendszer

második szervizcsomagjának megléte előfeltétel. A szükséges – ingyenesen letölthető – komponensek listája a következő: Név Adatbázisszerver Oracle HTTP szerver Link Oracle Database 10g Release 2 (10.2010) Oracle Database 10g Companion CD Release 2 (10.2010) Az adatbázisszerverre nyilván szükség van, hiszen az adatokat ezen keresztül fogjuk tárolni. A Companion CD egy kiegészítése az adatbázisszervernek, melyen egyes Java specifikus interMedia kiegészítők és az Oracle HTTP szerver komponens található. A telepítés során a lehető legegyszerűbben fogunk eljárni, a szükséges komponenseket nem válogatjuk ki – törekedve egy minimális installációra –, hanem elfogadjuk a rendszer alapértelmezett beállításait. A minimális hardverkövetelmények a következők: Memória: 256 megabájt Merevlemez: 2 gigabájt Videokártya: 256 szín Processzor: 550 megahertz Oracle interMedia - 59 Egy mai, átlagos otthoni számítógép ezeknek a

követelményeknek megfelel. Hozzátenném ugyanakkor, hogy az installációt ezeknek a követelményeknek sokszorosát teljesítő gépen végeztem el, és még így is érezhetően romlott a számítógép válaszideje. Az Oracle adatbázisszerver átlagos otthoni PC-re produktív céllal való installációja nem ajánlott. 6.11 Az adatbázisszerver installációja A szerver letöltése után a setup.exe állomány elindítja az Oracle Universal Installert 14. ábra Az Oracle Universal Installer – mint a neve is mutatja – egy olyan univerzális installáló felület, mely képes kezelni minden lokálisan telepítendő, illetve már telepített Oracle komponenst. Oracle interMedia - 60 15. ábra Az Oracle adatbázisszerver Enterprise verzióját kell telepíteni, mert ennek a része az Oracle interMedia csomag. Érdemes a kezdeti adatbázist nem kézzel, hanem automatikusan létrehozni. Mint látható, esetünkben ennek a neve orcl lesz Automatikus létrehozáskor az

adatbázist adminisztráló felhasználók jelszava kötelezően megadandó mező. 16. ábra Az installáció teljesen automatikus, nem igényel felhasználói interakciót. Oracle interMedia - 61 17. ábra Installáció közben figyelni kell azonban arra, hogy az adatbázisszerver TCP alapú kommunikációt indít meg a lokális gépen. Ez az érzékenyen beállított tűzfalszoftvereken figyelmeztető ablakok előugrását indukálja. (Az adott gépen pillanatnyilag a Comodo Personal Firewall ingyenes tűzfalszoftver fut, és annak a figyelmeztető ablaka látható az ábrán.) Természetesen az Oracle semmilyen fenyegető alkalmazást nem telepít a számítógépünkre, ezért nyugodtan engedélyezhetjük a kommunikációt. 18. ábra Maga az adatbázis létrehozása közvetlenül az adatbázisszerver installációja után történik. Ezt egy külön alkalmazás hajt végre, melyet az Oracle Universal Installer indít el. Oracle interMedia - 62 19. ábra Figyeljünk

arra, hogy ez az alkalmazás, feladatának végrehajtása után arra fog várni, hogy a felhasználó megnyomja az Ok gombot. Amíg ez nem történik meg, az installáció nem folytatódik. Ugyanerről az oldalról olvasható le az is, hogy a szerver adminisztrációs felülete a lokális gép hálózati nevével a 1158-as porton keresztül érhető el. 20. ábra A sikeres installáció után az Oracle Universal Installer automatikusan konfigurálja a telepített komponenseket. Oracle interMedia - 63 21. ábra Az installáció befejezésekor az Oracle Universal Installer tájékoztatja a felhasználót a különböző rendszerelérési pontokról és a konfigurációs állományok helyéről. A következő lépés az interMedia kiegészítő komponenseinek és az Oracle HTTP Servernek a telepítése. Ezek már a Companion CD részei, ezért az azon lévő setupexe állományt kell futtatni. 22. ábra Ismét egy Oracle Universal Installer felület ugrik elő, melyen keresztül

elvégezhető a telepítés. Oracle interMedia - 64 23. ábra A Companion CD-n külön komponensként installálandó az interMedia Image Accelerator. 24. ábra Az új interMedia komponens beépül a már telepített adatbázis-kezelő rendszerbe. Ehhez meg kell adni annak installálási helyét. Oracle interMedia - 65 25. ábra A telepítés nem igényel felhasználói interakciót, az új komponensek integrációja a háttérben történik meg. 26. ábra A telepítés befejeződésekor az Oracle Universal Installer tájékoztat az installált új komponensek webes elérhetőségéről. Ezután a telepítést újra kell kezdeni a Companion CD-n lévő setup.exe futtatásával Oracle interMedia - 66 27. ábra Válasszuk ki az Oracle HTTP Server komponenst telepítésre. 28. ábra Az Oracle HTTP Server egy új adatbázisszerverként települ, nem integrálható a már meglévőbe. Ezért a megadott installációs célkönyvtár el kell hogy térjen az előzőekben

már telepített szerverétől. Oracle interMedia - 67 29. ábra Az Oracle HTTP Servert Apache webszerveren keresztül tudjuk elérni, ezért számunkra az Apache Standalone Server szükséges komponens lesz. 30. ábra A sikeres installáció után az Oracle Universal Installer automatikusan konfigurálja a telepített komponenseket. Oracle interMedia - 68 31. ábra A telepítés befejeződésekor az Oracle Universal Installer tájékoztat az installált új komponensek webes elérhetőségéről. Ettől a pillanattól kezdve rendelkezésünkre áll az összes olyan Oracle komponens, mely szükséges az elkészített alkalmazás futtatásához. 6.12 Manuális konfiguráció Bár a telepítés folyamán az Oracle Universal Installer tájékoztat a különböző komponensek kezelőfelületeinek elérhetőségéről, a megadott címek nem mindig megfelelőek. A pillanatnyilag Oracle adatbázisszerverként működő gépemen a lokális hálózati címek feloldása nem

mindig volt sikeres. A problémát az Apache szerver beállításának megváltoztatásával orvosolni lehet. A megfelelő konfigurációs állomány a következő helyen található: %ORACLE HOME%ApacheApacheconfhttpd.conf Ebben kell karbantartani a ServerName paramétert. Ajánlott a TCP/IP protokoll lokális visszacsatoló címét megadni szervernévként (127.001), mivel ekkor a lokális hálózati címet nem kell feloldani, a szerver maga mindenképpen az adott kliens gép lesz. Természetesen megfelelően beállított hálózati architektúra esetén ez a lépés kihagyható. A következő teendő egy DAD (Database Access Descriptor) létrehozása, melyen keresztül az Oracle HTTP Server eléri az adatbázist. A DAD-okat tartalmazó konfigurációs állomány a következő helyen található: %ORACLE HOME%Apachemodplsqlconfdads.conf Az állomány friss szerver telepítésekor üres. A program futtatásának érdekében a következő DAD leírást kell beszúrnunk a fájlba:

Oracle interMedia - 69 <Location /<APPLICATION NAME>> SetHandler Order Allow AllowOverride PlsqlDatabaseUsername PlsqlDatabasePassword PlsqlDatabaseConnectString PlsqlAuthenticationMode PlsqlDefaultPage PlsqlDocumentTablename </Location> pls handler deny,allow from all None <USER> <PASSWORD> <CONNECT STRING> Basic <DEFAULT PAGE> <DOCUMENT TABLE> Az alapértelmezett értéken hagyott paraméterekkel nem foglalkozunk. Az <APPLICATION NAME> lesz a program neve, ezt az információt kell az Oracle HTTP Server elérésí címe után írni annak érdekében, hogy a programunk elinduljon. A <USER> és a <PASSWORD> értékek annak a felhasználónak az adatbázis-elérési adatai kell legyenek, akinek a programot megvalósító csomag, valamit a program által használt táblák a saját sémájában vannak definiálva. A <CONNECT STRING> az adatbázis elérési útvonala A <DEFAULT PAGE> annak az eljárásnak

a neve a programot megvalósító csomagban, mely a program kezdeti weboldalát generálja. A <DOCUMENT TABLE> annak a táblának a neve, melybe a feltöltött képek kerülnek majd, mielőtt a végleges tároló táblába átrakná a program. A működés finomhangolásához további paraméterek is elérhetők, a teljes leírás megtalálható az azonos könyvtárban lévő dads.README állományban Az általunk elkészített alkalmazás futtatásához a következő paraméterértékek kerültek bele a DAD információba: Paraméter <APPLICATION NAME> <USER> <PASSWORD> <CONNECT STRING> <DEFAULT PAGE> <DOCUMENT TABLE> Érték mediaapp a a 127.001:1521:orcl media app.view menu upload Természetesen a megadott felhasználónak a megfelelő jelszóval léteznie kell az adatbázisban. Az adminisztrátor a következő SQL scripttel hozhat létre felhasználót a szükséges jogosultságokkal együtt: CREATE USER a IDENTIFIED BY a; GRANT ALL

PRIVILEGES TO a; Produktív rendszerben a jogosultságok természetesen sokkal árnyaltabban vannak beállítva. Mint láthattuk, a DAD információkat tároló állományban a felhasználó jelszavát szövegesen kellett megadni. Ez biztonságtechnikai szempontból nem elfogadható, ezért a konfigurációs állomány kitöltése után a jelszavakat titkosítani kell. Az Oracle erre kész eszközt ad, az azonos könyvtárban megtalálható dadTool.pl Perl nyelven írt script pontosan Oracle interMedia - 70 ezt a célt szolgálja. Futtatásához először tegyük bele a Path környezeti változóba a Perl fordító elérési útját. set set set set ORACLE HOME=<ORACLE INSTALL DIR> PATH=%ORACLE HOME%Apachemodplsqlconf;%PATH% PATH=%ORACLE HOME%perl5.61inMSWin32-x86;%PATH% PATH=%ORACLE HOME%in;%PATH% Esetemben a várt paraméter értéke a következő: Paraméter <ORACLE INSTALL DIR> Érték D:oracleproduct10.20db 2 Ezután a DAD konfigurációs állomány

könyvtárában a következő parancs futtatása titkosítja a megadott jelszavakat: perl dadTool.pl -o A dadTool eszköz használatáról bővebb információt az azonos könyvtárban megtalálható dadTool.README állomány tartalmaz Mostantól kezdve az Oracle adatbázis és a HTTP szerver készen áll arra, hogy a megadott felhasználó elkészítse a futtatandó programját, melynek eredménye a PL/SQL Gatewayen keresztül, webes felületen fog megjelenni. 6.2 A Mediaapp alkalmazás Helyesen konfigurált HTTP szerver, és adott adatbázisszerver esetén az alkalmazás installációja nagyon egyszerű. Ügyelni kell arra, hogy a táblák és a funkciókat megvalósító csomag a DAD információban megadott felhasználó sémájában legyenek definiálva. A létrehozás bármely, az adatbázisszervert elérő SQL alkalmazásból (pl.: SQL Plus) megtehető 6.21 A táblák létrehozása Először is létre kell hozni a program által használt táblákat. Elsőként foglalkozunk a

„multipart/form data” típusú HTTP formokból érkező adatokat tároló táblával. Emlékezzünk rá, hogy ezt a táblát a DAD információban is meg kellett adni. Mivel az interMedia nemcsak képeket, hanem hang-, videó- és heterogén multimédia adatokat is tud kezelni, ezért a feltöltésre használt tábla általános kell legyen. A séma a következő: Mezőnév name Típus VARCHAR2(256) mime type doc size dad charset last updated content type blob content VARCHAR2(128) NUMBER VARCHAR2(128) DATE VARCHAR2(128) BLOB Leírás A feltöltött adat neve. Általában tartalmazza a feltöltött fájl nevét, valamint egyéb információkat. A feltöltött adat MIME típusa. A feltöltött adat hossza bájtban. A DAD leírás karaktertípusa. Általában ’ascii’ A feltöltés utolsó módosítási dátuma. Általában ’BLOB’. A feltöltött bináris adat. A táblát a következő utasítással lehet létrehozni: Oracle interMedia - 71 CREATE TABLE upload( name

VARCHAR2( mime type VARCHAR2( doc size NUMBER, dad charset VARCHAR2( last updated DATE, content type VARCHAR2( blob content BLOB ); 256 ) UNIQUE NOT NULL, 128 ), 128 ), 128 ), A médiás tartalmakat véglegesen tároló táblákban az adott médiaformátumnak megfelelő interMedia típusban fogjuk tárolni a bináris adatot. A mezők megadásakor ügyelni kell arra, hogy a NULL érték érvényes legyen, mivel az interMediás típusok speciális adatainak kitöltésére a kezdeti INSERT utasításkor nincsen lehetőség. Az eljárások iniciális értékekkel szúrnak be, majd a metaadatok kinyerése után karbantartják a beszúrt sort. A képeket tároló tábla a következő sémájú: Mezőnév id filename metaORDImage metaEXIF metaIPTC metaXMP image thumb Típus NUMBER VARCHAR(128) XMLTYPE XMLTYPE XMLTYPE XMLTYPE ORDSYS.ORDIMAGE ORDSYS.ORDIMAGE signature ORDSYS. ORDIMAGESIGNATURE Leírás A kép egyedi azonosítója. A feltöltött fájl neve. A kép ORDImage típusú

metaadatai. A kép EXIF típusú metaadatai. A kép IPTC típusú metaadatai. A kép XMP típusú metaadatai. A bináris kép interMedia formátumban. A bináris kép kicsinyítve, interMedia formátumban. A kép szignatúrája. Tartalomalapú összehasonlításhoz szükséges mező. Az XML típusú mezőkhöz érdemes hozzárendelni a megfelelő XML sémákat. A táblát a következő utasítással lehet létrehozni: Oracle interMedia - 72 CREATE TABLE photo( id NUMBER PRIMARY KEY, filename VARCHAR( 128 ), metaORDImage XMLTYPE, metaEXIF XMLTYPE, metaIPTC XMLTYPE, metaXMP XMLTYPE, image ORDSYS.ORDIMAGE, thumb ORDSYS.ORDIMAGE, signature ORDSYS.ORDIMAGESIGNATURE ) LOB( image.sourcelocaldata ) STORE AS ( chunk 32k ) LOB( thumb.sourcelocaldata ) STORE AS ( chunk 16k ) XMLType COLUMN metaORDImage XMLSCHEMA "http://xmlns.oraclecom/ord/meta/ordimage" ELEMENT "ordImageAttributes" XMLType COLUMN metaEXIF XMLSCHEMA "http://xmlns.oraclecom/ord/meta/exif"

ELEMENT "exifMetadata" XMLType COLUMN metaIPTC XMLSCHEMA "http://xmlns.oraclecom/ord/meta/iptc" ELEMENT "iptcMetadata" XMLType COLUMN metaXMP XMLSCHEMA "http://xmlns.oraclecom/ord/meta/xmp" ELEMENT "xmpMetadata"; A hangokat tároló tábla a következő sémájú: Mezőnév id filename song Típus NUMBER VARCHAR(128) ORDSYS. ORDAUDIO Leírás A hangállomány egyedi azonosítója. A feltöltött fájl neve. A bináris hang interMedia formátumban. A táblát a következő utasítással lehet létrehozni: CREATE TABLE audio( id NUMBER PRIMARY KEY, filename VARCHAR( 128 ), song ORDSYS.ORDAUDIO ); A mozgóképeket tároló tábla a következő sémájú: Oracle interMedia - 73 Mezőnév id filename movie Típus NUMBER VARCHAR(128) ORDSYS. ORDVIDEO Leírás A mozgókép egyedi azonosítója. A feltöltött fájl neve. A bináris mozgókép interMedia formátumban. A táblát a következő utasítással lehet létrehozni: CREATE

TABLE video( id NUMBER PRIMARY KEY, filename VARCHAR( 128 ), movie ORDSYS.ORDVIDEO ); Mindhárom médiatároló táblához – az egyedi azonosítók generálása miatt – létre kell hozni egy-egy szekvenciát. A létrehozó script: CREATE SEQUENCE photo sequence; CREATE SEQUENCE audio sequence; CREATE SEQUENCE video sequence; 6.22 Interfész Oracle PL/SQL Gatewayen keresztül elért alkalmazást PL/SQL csomagba kell integrálni. A csomag interfésze azokat az eljárásokat tartalmazza, melyeket a weboldal – különböző linkek és tagek segítségével – megjelenít, vagy olyan eljárás, mely a programlogika szerves részét képezi. Az eljárások – funkciójukat tekintve – a következő típusokba sorolhatók: 1. Megjelenítés 2. Médiaadat lekérdezése az adatbázisból 3. Médiaadat beszúrása az adatbázisba 4. Egyéb (funkcionális feladattal rendelkező eljárás) A deklarált interfész eljárások a következők: Oracle interMedia - 74 Eljárásnév view

menu Típus Leírás 1 Az alkalmazás kezdőoldala. Linkeken keresztül biztosít elérést a program funkcióihoz. view photo album 1 Az adatbázisba feltöltött összes kép egyszerű megjelenítése. view photo entry 1 Egy adott kép adatainak részletes megjelenítése. view photo upload form 1 Kép adatbázisba való feltöltésére használható űrlap megjelenítése. view photo compare form 1 Két kép tetszőleges súlyozással való összehasonlítására használható űrlap megjelenítése. view audio album 1 Az adatbázisba feltöltött összes hanganyag egyszerű megjelenítése. view audio entry 1 Egy adott hanganyag adatainak részletes megjelenítése. view audio upload form 1 Hanganyag adatbázisba való feltöltésére használható űrlap megjelenítése. view video album 1 Az adatbázisba feltöltött összes mozgókép anyag egyszerű megjelenítése. view video entry 1 Egy adott mozgókép anyag adatainak részletes megjelenítése. view video upload form 1

Mozgókép anyag adatbázisba való feltöltésére használható űrlap megjelenítése. deliver photo 2 Kép adatbázisból való kinyerése. deliver audio 2 Hanganyag adatbázisból való kinyerése. deliver video 2 Mozgókép anyag adatbázisból való kinyerése. insert new photo 3 Kép adatbázisba való beszúrása. insert new audio 3 Hanganyag adatbázisba való beszúrása. insert new video 3 Mozgókép anyag adatbázisba való beszúrása. compare photos 4 Két kép összehasonlítási eredményének megjelenítése. 6.23 Megvalósítás Az alkalmazás megvalósítása az interfészben definiált eljárások implementálását jelenti. Az 1-es típusú, azaz megjelenítés célú eljárások valamilyen HTML oldal generálását takarják. Egy ilyen – Oracle PL/SQL Gatewayen keresztül megjelenített – weblapot legegyszerűbben a htp objektum print metódusának megfelelő alkalmazásával tudunk elkészíteni. A metódus hívásai annak paramétere alapján, additív

módon készítik el az interfészben definiált eljárás által visszaadott weboldalt. A nem megjelenítés célú eljárások az adatbázishoz szorosan kötődő eljárások és függvények hívásával valósítják meg a kívánt funkciókat. Az implementáció során általános elv volt, hogy a generált HTML oldalak külalakjának nem kell feltétlenül tetszetősnek lennie. Amennyiben ez is igény lenne, az a weboldalak generálását nagymértékben bonyolítaná. Ennek a teljesítése már inkább webfejlesztői, mint back-end programozói feladat. Ezért úgy döntöttem, hogy az interMediában rejlő lehetőségek bemutatása nagyobb hangsúlyt kapjon, a design pedig csak másodlagos prioritású legyen. A csomag törzsében definiált segédeljárások célja az interfész eljárásainak támogatása. Bizonyos többször ismétlődő programsorokat invertáltam beléjük annak érdekében, hogy a kód olvashatóbb és rövidebb legyen. Oracle interMedia - 75 Az

eljárások definiálási módjára jellemző, hogy a paraméterek – ahol csak lehetséges – szöveges típusúak. Ezzel a módszerrel a konverzióból eredő hibák száma minimalizálható Amennyiben a kívánt funkció megvalósításához a paraméter típusának nem megfelelő a szöveg, úgy az eljárás törzse gondoskodik a megfelelő konverzióról és tárolja a szükséges típusú lokális változóban a paraméter értékét. 6.231 Saját típusok A különböző médiatípusokhoz tartozó albumok megjelenítése az adott médiatípushoz tartozó tábla sorainak feldolgozását foglalja magába. Ehhez kurzorokat kell definiálni Mivel a megvalósításban a weboldal összerakását, valamint a tábla elemeinek kinyerését és feldolgozását különböző eljárásokba akartam különíteni, ezért ezeket a kurzorokat nem elég a megfelelő eljárásokban definiálni, hanem a csomag saját típusainak kell lenniük. Ezzel a módszerrel lehetővé válik a kurzorok

paraméterben való átadása eljárások között. A kurzorok alaptípusa a megfelelő tábla azon mezői, melyek az album megjelenítésekor szerepet játszanak. A definiált kurzorok: Név Típus photo album cur type photo entry type audio album cur type audio entry type video album cur type video entry type A felhasznált típusok: Név photo entry type audio entry type video entry type Tartalom A konkrét kép azonosítója és a kicsinyített kép. A konkrét hang tartalom, valamint az azonosító és a feltöltött fájl neve. A konkrét mozgókép tartalom, valamint az azonosító és a feltöltött fájl neve. 6.232 A print html header eljárás A megjelenítendő weboldal HTML kódjának első néhány sorát generálja. A paraméterként megkapott felirat (label) része lesz a weblap fejlécének (<title> tag), valamint láthatóvá teszem az első sorban, az oldal címében is (<h1> tag). 6.233 A print html footer eljárás A megjelenítendő weboldal HTML

kódjának utolsó sorát generálja, lezárja a HTML kódot (</body> és </html> tagek). 6.234 A print error eljárás Amennyiben a weboldalak generálása közben valamilyen hiba lép fel – tipikusan valamilyen paraméter-konverziós hiba –, akkor az alkalmazásnak erről tájékoztatni kell a felhasználót. A generált weblap a hiba fellépésének helyét a kapott paraméter (text) alapján jeleníti meg a böngészőben, majd 2 másodperc múlva automatikusan arra az oldalra navigál, melyet az eljárás paraméterben (link) megkapott. Oracle interMedia - 76 6.235 A print uploaded eljárás Amennyiben valamilyen médiaadat adatbázisba való feltöltése sikerrel zárult, az alkalmazás erről tájékoztatja a felhasználót. A generált weboldal fejlécét és a szövegét is az eljárás paraméterei (title, text) határozzák meg. A weblap 2 másodperc után automatikusan arra az oldalra navigál, melyet az eljárás paraméterben (link) megkapott. 6.236

A print photo album eljárás Az eljárás célja a paraméterben megkapott kurzor (album cur) által meghatározott képek megjelenítése a képernyőn. A kurzor adatait végtelen cikluson keresztül dolgozzuk fel Az első lépés a kurzor által meghatározott kép kinyerése egy lokális változóba (entry). A ciklus kilépési feltétele a kurzor utolsó adatsorán túl való olvasás. Az első iterációban a program egy tájékoztató szöveget is kiír. Az iterációk sorszámát az entry count lokális változó reprezentálja. Maga a kép megjelenítése <img> tageken keresztül történik, az src paraméter a deliver photo eljárás megfelelően felparaméterezett változata. A képek alatt megjelenik a kép adatbázisbeli azonosítója is. Mindezeket az adatokat egy <a> tag foglalja egybe annak érdekében, hogy a felhasználó a képre vagy az azonosítóra kattintva meg tudja jeleníteni az adott kép részletes adatait. Az <a> tag href paramétere a

view photo entry eljárás megfelelően felparaméterezett változata. Amennyiben a kurzor egyetlen képet sem határoz meg, akkor erről a megjelenő weblap külön szövegben tájékoztat. 6.237 A print audio album eljárás Az eljárás célja a paraméterben megkapott kurzor (album cur) által meghatározott hanganyagok elérésének biztosítása. A működés elvei a print photo album eljárással azonosak. Végtelenített cikluson belül olvassuk be a kurzorban soron következő sort, és hajtjuk végre a következőket: Az áttekinthető megjelenítés érdekében HTML táblázatba (<table>) rendezzük az adatokat. Az első iterációban tájékoztató szöveget írunk ki, valamint a táblázatot bevezető tageket és a táblázat fejlécét is megadjuk. A táblázatban a hanganyagok adatbázisbeli azonosítója, valamint a feltöltött fájl neve jelenik meg. Mindkét bejegyzés egy HTML link (<a>), melynek href paramétere a view audio entry eljárás

megfelelően felparaméterezett változata. Amennyiben a kurzor egyetlen hanganyagot sem határoz meg, akkor erről a megjelenő weblap külön szövegben tájékoztat. 6.238 A print video album eljárás Az eljárás célja a paraméterben megkapott kurzor (album cur) által meghatározott mozgóképanyagok elérésének biztosítása. A működés elvei a print audio album eljárással azonosak. A linken belül használt eljárás a view video entry 6.239 A print metadata eljárás Az eljárás célja a paraméterben (meta) megkapott XML dokumentum megjelenítése a weblapon. Sajnos a htp objektum nem fogad el CLOB típusú paramétert, ezért a szöveges dokumentumot valamilyen buffer segítségével, szeletenként kell kiírni a weblapon. A konkrét megvalósításban a buffer 8192 karakter hosszú lesz. Első lépésben értékül adjuk a lokális CLOB típusú változónak (metaClob) az XML dokumentum tartalmát a getClobVal függvény segítségével. A szöveg hosszát egy

lokális változóban tároljuk (len), melyet a dbms lob.getLength függvénnyel nyerünk ki Amennyiben a buffer hossza nagyobb, mint a teljes dokumentum hossza, úgy a bufferméretet reprezentáló változó (bufsize) értékét a dokumentum hosszára csökkentjük. Ezután a dokumentumot egy ciklus segítségével Oracle interMedia - 77 végigolvassuk. A ciklusfeltétel a len változó pozitivitása, mivel minden olvasási iteráció a buffer méretével csökkenti a len változó értékét. A pos változó tárolja azt a pontot a dokumentumban, amennyit már kiolvastunk belőle. A tényleges kiolvasás a dbms lobread eljárás segítségével történik, a megjelenítést a htp.print eljárás végzi 6.2310 A get preferred format függvény Ez a függvény Windows Bitmap típusú képek tárolásakor hívódik meg. Mivel az Oracle interMedia nem támogatja a képek bitmap formátumban történő tárolását, ezért az ilyeneket konvertálni kell. Amennyiben a kép

színmélysége legalább 8, akkor érdemes a JPEG tömörítést alkalmazni rajta. Ellenkező esetben a GIF tömörítés az ajánlott A színmélység az ORDImage formátumú képek contentFormat attribútumának első néhány numerikus karakteréből nyerhető ki, amennyiben az interMedia képes volt ezt az információt az adott képről megállapítani. Ellenkező esetbena JPEG tömörítés az alapértelmezett A függvény paramétere (format) a contentFormat attribútuma a feltöltendő képnek. Ennek az információnak kell kiolvasni az első néhány karakterét, amelyek numerikusak. A num digits lokális változó tárolja a numerikus prefix karakterek számát. Amennyiben létezik a numerikus prefix, és értéke nagyobb 8-nál, akkor a függvény visszatérési értéke ’JFIF’, ellenkező esetben ’GIFF’. 6.2311 Az insert new photo eljárás Az eljárás célja a paraméterben (new photo) megkapott kép feltöltése az adatbázisba. A new photo értéke

meghíváskor az alkalmazáshoz tartozó feltöltő tábla (upload) azonosító mezőjének értéke (name). Az itt tárolt általános médiaadatról tudható, hogy kép, mivel az insert new photo eljárás a képeket feltöltő form felület adatainak jóváhagyása után azonnal meghívódik, az átadott paraméter értéke pedig a feltöltött fájl neve alapján generálódik és kerül tárolásra a feltöltő tábla name mezőjében. A feltöltő táblából való átmentés algoritmusa a végleges tárhelyre (photo tábla) szekvenciális, az elvégzett műveletek a következők: A feltöltő táblából a releváns adatok kiolvasása lokális változókba Új, iniciális sor beszúrása a végleges tároló táblába (új azonosítót a táblához tartozó szekvencia generál) A beszúrt iniciális sor visszaolvasása karbantartásra A feltöltő táblában tárolt bináris adat betöltése az ORDImage objektumba (dbms lob.copy eljárás) A kép automatikusan kinyerhető

metaadatainak feltöltése az ORDImage objektum megfelelő attribútumaiba (setProperties metódus) Amennyiben a feltöltött kép MIME típusa bittérkép, akkor a képet konvertálni kell a get preferred format függvény által visszaadott típusra (process metódus) Kicsinyített kép elkészítése (processCopy metódus) Metaadatok feldolgozása és mentése a megfelelő táblamezőbe (getMetadata metódus, majd az XML dokumentum gyökérattribútuma alapján való tárolás a megfelelő mezőben) Szignatúra generálása (generateSignature metódus) A feltöltött fájl nevének kinyerése az eljárás paraméteréből Az adatok mentése a tároló táblába Az adatok törlése a feltöltő táblából A változtatások véglegesítése (commit) A lépések sorrendje az Oracle interMedia működési mechanizmusa miatt szükségszerű, bővebben a Médiatartalom importálása az adatbázisba PL/SQL-lel fejezet tárgyalja. Az interMedia specifikus metódusok hívása minden

esetben védett blokkon belül történik, mivel egy nem ismert formátumú médiatartalomra nem tudjuk értelmezni ezeket a Oracle interMedia - 78 metódusokat. Ebben az esetben az eredmény-attribútumok és változók értékét valamilyen alapértelmezett értékre kell állítani. A műveletek sikeres befejezése után meghívódik a print uploaded eljárás. 6.2312 Az insert new audio eljárás Az eljárás célja a paraméterben (new audio) megkapott hanganyag feltöltése az adatbázisba. Mivel a médiaadatok feltöltésének mechanizmusa kötött, ezért az eljárás lépései hasonlítanak a képek feltöltésére használt insert new photo eljárás lépéseire: A feltöltő táblából a releváns adatok kiolvasása lokális változókba Új, iniciális sor beszúrása a végleges tároló táblába (audio, azonosítót a táblához tartozó szekvencia generál) A beszúrt iniciális sor visszaolvasása karbantartásra A feltöltő táblában tárolt bináris adat

betöltése az ORDAudio objektumba (dbms lob.copy eljárás) A hanganyag automatikusan kinyerhető metaadatainak feltöltése az ORDAudio objektum megfelelő attribútumaiba (setProperties metódus) A feltöltött fájl nevének kinyerése az eljárás paraméteréből Az adatok mentése a tároló táblába Az adatok törlése a feltöltő táblából A változtatások véglegesítése (commit) Erre az eljárásra is érvényes, hogy a speciális interMedia eljárások hívása védett blokkon belül kell történjen, a hibák kezelése analóg a képeknél ismertetett módszerrel. A műveletek sikeres befejezése után meghívásra kerül a print uploaded eljárás. 6.2313 Az insert new video eljárás Az eljárás célja a paraméterben (new video) megkapott mozgóképanyag feltöltése az adatbázisba. Mivel a médiaadatok feltöltésének mechanizmusa kötött, ezért az eljárás lépései hasonlítanak a képek feltöltésére használt insert new photo eljárás

lépéseire: A feltöltő táblából a releváns adatok kiolvasása lokális változókba Új, iniciális sor beszúrása a végleges tároló táblába (video, azonosítót a táblához tartozó szekvencia generál) A beszúrt iniciális sor visszaolvasása karbantartásra A feltöltő táblában tárolt bináris adat betöltése az ORDVideo objektumba (dbms lob.copy eljárás) A mozgókép anyag automatikusan kinyerhető metaadatainak feltöltése az ORDVideo objektum megfelelő attribútumaiba (setProperties metódus) A feltöltött fájl nevének kinyerése az eljárás paraméteréből Az adatok mentése a tároló táblába Az adatok törlése a feltöltő táblából A változtatások véglegesítése (commit) Erre az eljárásra is érvényes, hogy a speciális interMedia eljárások hívása védett blokkon belül kell történjen, a hibák kezelése analóg a képeknél ismertetett módszerrel. A műveletek sikeres befejezése után meghívásra kerül a print

uploaded eljárás. 6.2314 A compare photos eljárás Az eljárás célja a paraméterben (id1, id2) megkapott azonosítóval rendelkező – photo táblabeli – képek összehasonlítása az ugyancsak a paraméterek (w c, w t, w s, w l) által meghatározott súlyozás alapján, majd az eredménypontszám kiírása a képernyőre. Az eljárás első néhány utasításának célja annak megállapítása, hogy az eljárás paraméterei megfelelőek. Ennek lépései: Oracle interMedia - 79 A megadott paraméterek szám típusúak (azaz konvertálhatók szöveges típusból szám típusra) A súlyozással kapcsolatos paraméterek értéke 0 és 1 közé eső racionális számok A megadott azonosítóval léteznek képek a photo táblában Amennyiben bármelyik fent említett feltétel nem teljesül, akkor meghívódik a print error eljárás, és egy hibaüzenet jelenik meg a képernyőn. A képek hasonlósági pontszámát meghatározó eljárás az evaluateScore. Ennek – a

súlyozáson kívül – paramétere a kiválasztott két kép szignatúrája, melyeket egy lokális változóba mentettünk el abban a lépésben, amikor a képek létezését, mint előfeltételt vizsgáltuk (adatbázisból való kiolvasással). A további lépések: A print html header eljárás meghívása Az összehasonlítás eredményeinek megjelenítése a weboldalon (táblázatos formában jelenik meg az összehasonlított két kép, a súlyozás, valamint a hasonlóság mértékét meghatározó pontszám) A print html footer eljárás meghívása 6.2315 A view upload form eljárás Az eljárás célja egy olyan, feltöltésekre használható HTML form felület megjelenítése, mely tetszőleges médiaformátumra használható. A megjelenített weblap fejlécét a print html header (a megfelelő title paraméterrel), a végét pedig a print html footer eljárás generálja. A formot – elfogadás után – feldolgozó eljárást egy paraméter (subroutine) határoz meg.

A megjelenített mezők: Fájlnév (a fájlnevet tároló paraméter nevét az eljárás param name paramétere határozza meg) A feltöltést elindító gomb (felirat az eljárás btn title paramétere) 6.2316 A view photo album eljárás Az eljárás célja az adatbázisban tárolt fotók megjelenítése webes felületen. A HTML oldal fejlécét és végét generáló eljárások (print html header és print html footer) meghívása között történik a kiolvasás a megfelelő táblából a médiatípusnak megfelelő kurzorba, majd meghívódik a print photo album eljárás. 6.2317 A view photo entry eljárás Az eljárás célja egy – az adatbázisban tárolt – kép és annak kinyert metaadatainak megjelenítése egy weblapon. A lépések a következők: A HTML oldal fejlécének generálása (print html header eljárás) A paraméterben (entry id) megadott azonosítóval rendelkező kép kiolvasása a photo táblából, az adatok tárolása lokális változókban A kép

megjelenítése a weblapon a deliver photo eljárás segítségével A fájlnév kiírása Azoknak az XML dokumentumoknak a kiírása, melyeket a képből ki lehetett nyerni feltöltéskor. Ezek a photo tábla – az XML dokumentum sémájának – megfelelő mezőiben vannak tárolva. A HTML oldal végének generálása (print html footer eljárás) 6.2318 A view photo upload form eljárás Meghívja a view upload form eljárást a megfelelő paraméterekkel. Oracle interMedia - 80 6.2319 A view photo compare form eljárás Az eljárás célja annak a webes űrlap felületnek a megjelenítése, melyen keresztül a felhasználó megadhatja az összehasonlítás alapját képező két kép azonosítóját, valamint a súlyozás adatait. A lépések: A HTML oldal fejlécének generálása (print html header eljárás) Az űrlap felület megjelenítése (A feldolgozó eljárás a compare photos. A form paraméterei mind szöveges típusúak és 5 karakter hosszúak.) A HTML

oldal végének generálása (print html footer eljárás) 6.2320 A view audio album eljárás Az eljárás célja az adatbázisban tárolt hanganyagok megjelenítése webes felületen. A HTML oldal fejlécét és végét generáló eljárások (print html header és print html footer) meghívása között történik a kiolvasás a megfelelő táblából a médiatípusnak megfelelő kurzorba, majd meghívódik a print audio album eljárás. 6.2321 A view audio entry eljárás Az eljárás célja egy – az adatbázisban tárolt – hanganyag és annak kinyert metaadatainak megjelenítése egy weblapon. A lépések a következők: A HTML oldal fejlécének generálása (print html header eljárás) A paraméterben (entry id) megadott azonosítóval rendelkező hanganyag kiolvasása az audio táblából, az adatok tárolása lokális változókban A kinyerhető metaadatok tárolása lokális változókban. Minden interMedia specifikus függvényhívás védett blokkban történik,

mivel ha valamelyik metaadat kinyerése nem lehetséges, akkor kivétel váltódik ki. Ilyen esetben a lokális változó értékét NULL-ra állítjuk. A metaadatok kiírása táblázatos formában Link készítése a hanganyag elérésére deliver audio href paraméterrel A HTML oldal végének generálása (print html footer eljárás) A kinyert metaadatok a következők lehetnek: Metaadat Lejátszási idő Tömörítés típusa A bináris adat hossza Kódolás típusa Formátum Hangsávok száma Minta mérete Mintavételezési frekvencia Mértékegység másodperc byte Hz interMedia függvény getAudioDuration getCompressionType getContentLength getEncoding getFormat getNumberOfChannels getSampleSize getSamplingRate 6.2322 A view audio upload form eljárás Meghívja a view upload form eljárást a megfelelő paraméterekkel. 6.2323 A view video album eljárás Az eljárás célja az adatbázisban tárolt mozgókép anyagok megjelenítése webes felületen. A HTML oldal

fejlécét és végét generáló eljárások (print html header és print html footer) meghívása között történik a kiolvasás a megfelelő táblából a médiatípusnak megfelelő kurzorba, majd meghívódik a print video album eljárás. Oracle interMedia - 81 6.2324 A view video entry eljárás Az eljárás célja egy – az adatbázisban tárolt – mozgókép anyag és annak kinyert metaadatainak megjelenítése egy weblapon. A lépések a következők: A HTML oldal fejlécének generálása (print html header eljárás) A paraméterben (entry id) megadott azonosítóval rendelkező mozgókép anyag kiolvasása a video táblából, az adatok tárolása lokális változókban A kinyerhető metaadatok tárolása lokális változókban. Minden interMedia specifikus függvényhívás védett blokkban történik, mivel ha valamelyik metaadat kinyerése nem lehetséges, akkor kivétel dobódik. Ilyen esetben a lokális változó értékét NULL-ra állítjuk. A metaadatok

kiírása táblázatos formában Link készítése a mozgókép anyag elérésére deliver video href paraméterrel A HTML oldal végének generálása (print html footer eljárás) A kinyert metaadatok a következők lehetnek: Metaadat Bitráta Tömörítés típusa A bináris adat hossza Formátum Képfrissítési frekvencia Képek felbontása Képek szélessége Képek magassága Színek száma Képek száma Lejátszási idő Mértékegység byte kép/másodperc pixel pixel másodperc interMedia függvény getBitRate getCompressionType getContentLength getFormat getFrameRate getFrameResolution getFrameSize getFrameSize getNumberOfColors getNumberOfFrames getVideoDuration 6.2325 A view video upload form eljárás Meghívja a view upload form eljárást a megfelelő paraméterekkel. 6.2326 A view menu eljárás Az eljárás célja – <a> tag-ek segítségével – egy olyan webes felület megjelenítése, melyen keresztül elérhetők az alkalmazás különböző

funkciói. A tagek href paraméterei az adott funkciót megjelenítő eljárások nevei a csomagban. 6.2327 A deliver photo eljárás Az eljárás célja a kép, mint médiatartalom közvetítése a böngésző felé. Szokásos felhasználási helye az <img> tag-ek src paramétere. Az eljárás elején a megadott azonosítóval (entry id) rendelkező képet kiolvassuk az adatbázisból. Az eljárás paramétere (media) vezérli azt, hogy a kicsinyített vagy a teljes méretű kép kerüljön a lokális változóba. A további lépések a következők: Mivel a médiatartalmak mérete tipikusan nagy, ezért a hatékony erőforrás-használat miatt meg kell vizsgálni, hogy a bináris adat származhat-e a kliens cache tárolójából. Ennek érdekében ellenőrizendő, hogy az ordplsgwyutil.cache is valid függvény felparaméterezve a megjelenítendő kép utolsó módosításának dátumával (getUpdateTime függvény) milyen logikai értéket ad vissza. Amennyiben igazat, úgy

a HTTP fej státusz részében jelezni kell, hogy a tartalom a gyorsítótárból jön. Ez megtehető a owa util.status line eljárással, melyet fel kell paraméterezni a Oracle interMedia - 82 ordplsgwyutil.http status not modified konstanssal Az eljárás ebben az esetben befejezhető. Be kell állítani a visszaadandó HTML tartalom típusát. Ez a owa utilmime header eljárás segítségével tehető meg. A paraméter legyen a kép MIME típusa (mimeType attribútum). A kliens gyorsítótárában meg kell adni a most letöltendő bináris tartalom utolsó módosításának dátumát annak érdekében, hogy a legközelebbi letöltés már a cache-ből történhessen. Ez a ordplsgwyutilset last modified eljárás segítségével történhet, paraméter legyen a tartalom utolsó módosításának dátuma (getUpdateTime függvény). Le kell zárni a HTTP fejlécet a owa util.http header close eljárás segítségével Amennyiben a böngésző felől érkező kérés (owa

util.get cgi env függvény, ’REQUEST METHOD’ konstans paraméterrel) nem csak a HTML tartalom fejére (’HEAD’) vonatkozik, úgy a bináris adatot közvetíteni kell a kliens felé. Ez a wpg docload.download file eljárással tehető meg, felparaméterezve a bináris tartalommal (source.localData függvény) A leírás alapján látható, hogy a PL/SQL Gateway a bináris tartalmat egy beágyazott, egyszerűsített HTML oldal formájában közvetíti a böngésző felé. 6.2328 A deliver audio eljárás Az eljárás célja a hanganyag, mint médiatartalom közvetítése a böngésző felé. Szokásos felhasználási helye az <a> tag-ek href paramétere. Az eljárás működési mechanizmusa analóg a deliver photo eljáráséval kivéve, hogy itt a hanganyagot, mint interMedia objektumot kell kiolvasni az adatbázisból. A felhasznált, interMedia specifikus függvények alkalmazhatók ORDAudio típusra is, mivel a metódusok az interMedia médiaosztályok közös

ősétől származnak. 6.2329 A deliver video eljárás Az eljárás célja a mozgóképanyag, mint médiatartalom közvetítése a böngésző felé. Szokásos felhasználási helye az <a> tagek href paramétere. Az eljárás működési mechanizmusa analóg a deliver photo eljáráséval kivéve, hogy itt a mozgókép anyagot, mint interMedia objektumot kell kiolvasni az adatbázisból. A felhasznált interMedia specifikus függvények alkalmazhatók ORDVideo típusra is, mivel a metódusok az interMedia médiaosztályok közös ősétől származnak. Oracle interMedia - 83 7. Irodalomjegyzék Név Oracle interMedia User’s Guide Oracle interMedia Reference Oracle interMedia Java Classes API Reference Oracle interMedia Java Classes for Servlets and JSP API Reference Verzió B14302-01 B14297-01 B14301-01 B14300-01 Dátum 2007.0603 2007.0603 2007.0603 2007.0603 Forrás Letöltés. Letöltés. Link Link Oracle interMedia - 84 8. Melléklet A szakdolgozathoz tartozó

CD melléklet a következőket tartalmazza: A szakdolgozatot Microsoft Word DOC és Adobe PDF formátumban o szakdolgozat.doc o szakdolgozat.pdf Különböző formátumú minta médiaadatokat a „minta” könyvtárban o Képek: „kep ” fájlnév prefixszel o Mozgóképek: „video ” fájlnév prefixszel o Hanganyagok: „hang ” fájlnév prefixszel A MEDIAAPP programot és a hozzá tartozó segédcsomag implementációját a „mediaapp” könyvtárban o intermedia script.sql o intermedia support package.sql Oracle interMedia - 85