Day 34: Oracle interMedia


Learning In HomeOriginal Date: 15 Februari 2009

Oracle interMedia memungkinkan penyimpanan dan manajemen konten multimedia seperti gambar, audio dan video di dalam database Oracle. Data audio dikenal sebagai ORDAudio, data gambar dikenal sebagai ORDImage, dan data gambar dikenal sebagai ORDVideo. Data yang dapat terdiri dari baik audio, image, video , maupun text, dikenal sebagai ORDDoc (Heterogenous Media).

Aku akan mencoba memakai fitur Oracle interMedia untuk menyimpan data gambar. Aku mulai dengan membuat tabel sederhana seperti berikut:


CREATE TABLE TBL_GAMBAR (
ID_GAMBAR NUMBER(10),
GAMBAR ORDSYS.ORDImage
)

Lalu, aku akan menyimpan sebuah gambar ke dalam tabel tersebut dengan melalui JDBC. Caranya tidak berbeda jauh seperti menyimpan data BLOB, hanya saja sekarang jadi lebih gampang. Sebelum menjalankan kode berikut, aku memastikan file %ORACLE_HOME%\ord\jlib\ordim.jar ada dalam CLASSPATH:


OracleConnection cn = 
  (OracleConnection) ods.
  getConnection();
cn.setAutoCommit(false);
		
OracleStatement os = 
  (OracleStatement) cn.
  createStatement();
os.executeUpdate("INSERT INTO 
  TBL_GAMBAR VALUES 
  (1, ORDSYS.ORDImage.init())");
cn.commit();
			
OracleResultSet rs = (OracleResultSet) 
  os.executeQuery("SELECT GAMBAR 
    FROM TBL_GAMBAR 
    WHERE ID_GAMBAR = 1 
    FOR UPDATE");
rs.next();
OrdImage gambar = (OrdImage) 
  rs.getORAData(1, 
    OrdImage.getORADataFactory());
gambar.loadDataFromFile(
  "c:\\gambar1.jpg");
			
OraclePreparedStatement ps = 
  (OraclePreparedStatement) 
  cn.prepareStatement(
    "UPDATE TBL_GAMBAR SET GAMBAR = ? 
     WHERE ID_GAMBAR = 1");
ps.setORAData(1, gambar);
int totalUpdated = ps.executeUpdate();
cn.commit();

Berikutnya, aku akan mencoba memproses gambar yang aku upload tadi di dalam server database Oracle. Aku akan mengecilkan ukurannya menjadi 50×50 dan mengubahnya ke dalam format GIF dengan contoh kode program seperti berikut ini:


OracleResultSet rs = (OracleResultSet) 
  os.executeQuery("SELECT GAMBAR 
  FROM TBL_GAMBAR WHERE 
  ID_GAMBAR = 1 FOR UPDATE");
rs.next();
	
OrdImage gambar = (OrdImage) 
rs.getORAData(1, 
  OrdImage.getORADataFactory());
gambar.process(
"maxScale=50 50, fileFormat=GIFF");
cn.commit();

Walaupun kode di atas diberikan oleh client, proses pengolahan gambar tetap terjadi di sisi server. Oleh sebab itu, saat aku membaca nilai gambar tersebut di transaksi yang berbeda, aku tetap akan memperoleh sebuah gambar GIF berukuran mendekati 50×50 (sesuai ratio):


OrdImage gambar = (OrdImage) 
  rs.getORAData(1, 
    OrdImage.getORADataFactory());
BLOB blob_gambar = 
  gambar.getContent();
InputStream is = 
  blob_gambar.getBinaryStream(1l);
			
FileOutputStream fos = new 
  FileOutputStream("c:\\test.gif");
byte[] b = new byte[200];
while (is.read(b) > 0) {
  fos.write(b);
}
is.close();
fos.close();

Perihal Solid Snake
I'm nothing...

3 Responses to Day 34: Oracle interMedia

  1. riza mengatakan:

    bro, bagaimana cara untuk buka file multimedia spt film atau dokumen spt word langsung dari database menggunakan java.

    Thanks

  2. Andrianto mengatakan:

    gan, bagaimana memanipulasi gambar seperti contras dan rotasi dgn oracle multimedia dan java?
    Apa dapat kita mengedit/update data di multimedia database?

    • solidsnake99 mengatakan:

      Oracle interMedia mendukung beberapa operasi yang dilewatkan sebagai argumen pada method process() seperti “rotate” untuk rotasi, “contrast” untuk mengatur kontras, dan sebagainya. Yang saya pakai di contoh di atas adalah “maxScale”.

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: