Aplikasi Ponsel Image Watermmarking

J2ME merupakan teknologi yang dikembangkan oleh Sun untuk aplikasi yang
berjalan diatas sebuah perangkat mobile dalam hal ini handphone. Di dalam J2ME, untuk mengambil sebuah citra / foto melalui kamera hanphone dapat dilakukan dengan menggunakan Mobile Media API.
Mobile Media API merupakan API dari Java yang mengkhususkan sebuah mobile device untuk dapat menjalankan dan mengakses fitur multimedia yang terdapat pada mobile device tersebut.

Setiap citra / foto yang dihasilkan dari kamera handphone oleh MMAPI disimpan dalam sebuah Array of pixels yang berisi kumpulan warna pada setiap citra yang dihasilkan. Array of pixels ini nantinya akan digunakan sebagai media untuk melakukan image watermarking pada mobile device.
Berikut contoh source code program dalam bahasa pemograman Java untuk menangkap citra dari kamera handphone :

import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.media.control.VideoControl;
public class JepretRight extends MIDlet implements CommandListener {
private Display display;
private Form form;
private Command exit,back,capture,camera;
private Player player;
private VideoControl videoControl;
private Video video;
public JepretRight() {
exit = new Command(“Exit”, Command.EXIT, 0);
camera = new Command(“Camera”, Command.SCREEN, 0);
back = new Command(“Back”, Command.BACK, 0);
capture = new Command(“Capture”, Command.SCREEN, 0);
form = new Form(“Capture Image”);
form.addCommand(camera);
form.setCommandListener(this);
}

public void showCamera() {
try {
player = Manager.createPlayer(“capture://image”);
player.realize();
videoControl = (VideoControl)player.getControl(“VideoControl”);
Canvas canvas = new VideoCanvas(this, videoControl);
canvas.addCommand(back);
canvas.addCommand(capture);
canvas.setCommandListener(this);
display.setCurrent(canvas);
player.start();
} catch (IOException ioe) {} catch (MediaException me) {}
}
…..etc
class Video extends Thread {
videoMIDlet midlet;
public Video(VideoMIDlet midlet) {
this.midlet = midlet;
}
public void run() {
captureVideo();
}
public void captureImage() {
try {
byte[] raw = videoControl.getSnapshot(null);
Image image = Image.createImage(raw, 0, raw.length);
form.append(image);
display.setCurrent(form);
player.close();
player = null;
videoControl = null;
} catch (MediaException me) { }
}
};
}

source code VideoCanvas.java

public class VideoCanvas extends Canvas {
private VideoMIDlet midlet;
public VideoCanvas(VideoMIDlet midlet, VideoControl videoControl) {
int width = getWidth();
int height = getHeight();
this.midlet = midlet;
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
try {
videoControl.setDisplayLocation(2, 2);
videoControl.setDisplaySize(width – 4, height – 4);
} catch (MediaException me) {}
videoControl.setVisible(true);
}
public void paint(Graphics g) {
int width = getWidth();
int height = getHeight();
g.setColor(0x00ff00);
g.drawRect(0, 0, width – 1, height – 1);
g.drawRect(1, 1, width – 3, height – 3);
}
}

Pada dua potongan kode hasil implementasi diatas terutama pada kelas JepretRight terdapat metod / prosedur captureImage(). Prosedur ini akan menghasilkan sebuah Image dalam representasi array of bytes yang berisi kumpulan warna dari citra hasil capture. Setelah mendapatkan citra dalam bentuk array of byte selanjutnya akan dilakukan watermarking dengan metode spasial. Metode ini dilakukan dengan mengubah warna dari lokasi byte tertentu dimana posisi dari byte array yang di watermarking diketahui oleh pencipta gambar. Berikut potongan metode hasil implementasi dari metode spasial watermarking dalam J2ME.

public Image captureWatermark(byte[] raw, int[] key, byte keyColor) {
int i=0;
for(i=0;i < key.Length();i++){
raw[key[i]] = keyColor;
}
Image image = Image.createImage(raw, 0, raw.length);
return image;
}

Image yang dihasilkan dari gambar diatas merupakan citra yang telah mengalami proses watermarking secara spasial dengan kunci key dan nilai warna yang menggantikan warna pada pixels yang mengalami watermarking adalah keyColor. Ketika melakukan proses watermarking pada kode diatas, hanya terjadi proses pengulangan sebanyak panjang kunci yang diinginkan. Sehingga ukuran dari kecepatan untuk
melakukan proses watermarking ini tergantung kepada panjang kunci yang digunakan.
Misalkan waktu dalam melakukan watermarking dilambangkan dengan simbol W, panjang kunci dalam proses ini sejumlah K, dan satuan waktu untuk melakukan satu kali pengulangan adalah n second, maka didapatkan rumus sebagai berikut :
W = n. K

dikutip dari bapak Budiono di http://informatika.org/~rinaldi/Kriptografi/2006-2007/Makalah1/Makalah1-001.pdf

3 Tanggapan

  1. hehe.. kalo mau lengkap , buka di http://www.java-tips.org/java-me-tips/

  2. Halo Bang, nama Saya Edison.
    Saya sangat tertarik dengan artikel diatas (“Watermarking-Images”) dan sekarang juga saya sedang belajar mengenai penggunaan watermarking using images untuk topik Tugas Akhir saya di kampus. Bisa minta tolong Bang, untuk informasinya kedepan mengenai watermarking using images ini. O ya Bang, ada gak aplikasi watermarking-images ini??

    Klo untuk code java diatas kan itu hanya seperti “source code”-nya saja, dengan menggunakan J2ME Wireless Toolkit (KToolbar) mngkn membukanya. Ada gak Bang yang berbentuk .exe tapi aplikasinya pake Java (gak ada ya Bang…Hehehe…).

    Alamat email Abang apa ya Bang??
    Email aku : edison.sihotang@yahoo.co.id

    Besar harapanku, Abang bisa mengirim email samaku..

    Hehehe…

    Thx.

  3. Mas, mau nanya…
    Untuk method captureWatermark yang parameter keyColor itu di dapat dari mana???

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

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: