Convert RGB to GrayScale in Java


Untuk memudahkan perhitungan dalam image processing, juga untuk keperluan lainnya🙂, kadang kita membutuhkan untuk mengonversi dari citra RGB ke GrayScale. RGB memiliki 3 nilai (Red, Green, dan Blue) untuk setiap pixelnya, sedangkan GrayScale, hanya memiliki satu nilai untuk tiap pixelnya.

Berikut ini adalah contoh Program Java yang bisa melakukan fungsi ini.

import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class RGB2GS{
  public static void main(String[] args) throws IOException{
    File file= new File("smile.jpg");
    int c, r, g, b;
    BufferedImage x = ImageIO.read(file);
    int width = x.getWidth();
    int height = x.getHeight();

    //Membuat Buffered image untuk image grayscale
    BufferedImage im = new BufferedImage(width,height,BufferedImage.TYPE_BYTE_GRAY);

    //Kita membutuhkan rasternya untuk memberikan nilai pixel
    WritableRaster raster = im.getRaster();

    for(int i=0; i<x.getWidth(); i++){
        for(int j=0; j<x.getHeight(); j++){
            c =  x.getRGB(i,j);
            r = (c & 0x00ff0000) >> 16;
            g = (c & 0x0000ff00) >> 8;
            b = c & 0x000000ff;
            float gray = (float) (0.3 * r + 0.59 * g + 0.11 * b);
            raster.setSample(i, j, 0, gray);
        }
    }
    // Simpan citra dengan menggunakan format PNG
    ImageIO.write(im,"PNG",new File("newGray.png"));
    }
}

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 Image Processing and tagged , , , , , , , . Bookmark the permalink.

6 Responses to Convert RGB to GrayScale in Java

  1. eka sakti says:

    gan ane mau tanya klo program dri terbesar terkecil bagaimana gan..
    terima kasih

  2. sugiarto cokrowibowo says:

    ???
    (mau coba nebak)
    mungkin maksudnya program sorting dari bilangan terbesar ke bilangan terkecil (Desc)

  3. sugiarto cokrowibowo says:

    Kalu Gray to RGB gimana caranya???

  4. Gan, ane mau tanya & itu fungsi nya apa?
    trus untuk & 0x0000ff00 nya juga? Terima kasih🙂

  5. Nughie says:

    g bisa gan…
    g jadi GrayScale…

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