Mendapatkan Nilai RGB dalam Citra


Dalam posting sebelumnya, saya sharing tentang mengambil nilai RGB dalam satu pixel citra. Koordint pixelnya sudah ditentukan dalam program tersebut. Di sini saya akan share, mengambil nilai RGB dalam citra. Berikut ini contoh sourcecodenya:

import java.awt.image.BufferedImage;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;

/**
 *
 * @author Windu Purnomo
 */
public class RGBValue {
    private BufferedImage image;
    private int [][] rgbValue;
    private String value = "*** Nilai RGB ***\n";

    /*
     * @param pathFile adalah path file gambar yang akan diproses
     */
    public void setImage(String pathFile){
        File file = new File(pathFile);
        try {
            image = ImageIO.read(file);
        } catch (IOException ex) {
            Logger.getLogger(RGBValue.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public BufferedImage getImage() {
        return image;
    }

    /*
     * @param image adalah BufferedImage yang akan diambil nilai RGB nya
     */
    public void setRgbValue(BufferedImage image) {
        int width = image.getWidth();
        int height = image.getHeight();
        value+="width: "+width+"\n"
                + "height: "+height+"\n";
        value+="Format : (x,y: R,G,B)\n\n";
        rgbValue = new int[width*height][3];
        int counter = 0;
        for(int i=0 ; i<width ; i++){
            for(int j=0 ; j<height ; j++){
                int color = image.getRGB(i, j);
                int red = (color & 0x00ff0000) >> 16;
                int green = (color & 0x0000ff00) >> 8;
                int blue = (color & 0x000000ff);
                rgbValue[counter][0] = red;
                rgbValue[counter][1] = green;
                rgbValue[counter][2] = blue;
                counter++;
                value+="("+i+","+ j+": "+red+", "+green+", "+blue+")\n";
            }
            System.out.println("kolom ke-"+i);
        }
    }

    public int[][] getRgbValue() {
        return rgbValue;
    }

    /*
     * @param pathFile adalah path file untuk menyimpan nilai RGB
     */
    public void cetakRGBValue(String pathFile){
        try {
            BufferedWriter writer = new BufferedWriter(new FileWriter(pathFile));
            writer.write(value);
            writer.close();
        } catch (IOException ex) {
            Logger.getLogger(RGBValue.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static void main(String[] args) {
        RGBValue r = new RGBValue();
        r.setImage("D:\\test.jpg");
        r.setRgbValue(r.getImage());
        int x[][] = r.getRgbValue();

        //melihat nilai RGB untuk setiap pixel
        r.cetakRGBValue("D:\\test.txt");
        System.out.println("selesai");
    }
}

Catatan:

[1]. Anda jangan kaget ketika program g selesai2. Coba cek berapa ukuran citra yang Anda gunakan. Jika anda mempunyai citra berukuran 300×300 maka akan ada 90.000 pixel, yang artinya akan ada 90.000 kali pengambilan nilai RGB. Insya Alloh lama😀. Untuk awalan saya sarankan Anda menggunakan citra berukuran kecil.

[2]. Performa program dapat ditingkatkan dengan menggunakan Thread. Nantikan posting selanjutnya😀

About windupurnomo

I'm interested in programming. I am active with several programming such as Java, C #, C, JavaScript, HTML. I'm also develop desktop application (Java Swing), Mobile Application (Android), and Web programming (ASP MVC).
This entry was posted in Java and tagged , , , . Bookmark the permalink.

4 Responses to Mendapatkan Nilai RGB dalam Citra

  1. irham says:

    pstinya saya tunggu tntang thread na bang

  2. dhikahunt says:

    mas windu…. kalau kita mau ngambil nilai pixel dari gambar yang udah di deteksi tepi gmn mas? trus dijadiin himpunan ato array gtu… makasih mas

  3. kum bara says:

    mas, saya mau tanya nih tentang mencari warna RGB dari citra/gambar, ada gk mas dari tahapan pertama sampai akhir atau langkah” nya dari pertama sampai mendapatkan nilai RGB nya? saya kurang mengerti dengan kodenya itu. saya baru belajar netbeans, jadi saya minta bantuan mas.

  4. Burhan says:

    Nice infor mba, makasih…😀

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s