Make Greyscale for Image in J2ME

"Nun, demi pena dan apa yang mereka tulis" (Al-Qalam:1)


Setelah sekian lama bertapa, hehe, akhirnya aku temukan solusi untuk projectku di kantor. Membuat sebuah gambar menjadi hitam putih. Ya, ini juga berkat sharing dari teman-teman kantor (Thanks to mas wahyono dan mas DC untuk sharing ilmunya).
Oke, langsung aja, ini method untuk membuat gambar menjadi hitam putih (hasil googling juga).

private static Image makeGreyScale(Image img) {
        // work out how many pixels, and create array
        int width = img.getWidth();
        int height = img.getHeight();
        int[] pixels = new int[width * height];
        // get the pixel data
        img.getRGB(pixels, 0, width, 0, 0, width, height);
        // convert to grey scale
        for (int i = 0; i < pixels.length; i++) {
            // get one pixel
            int argb = pixels[i];
            // separate colour components
            int alpha = (argb >> 24) & 0xff;
            int red = (argb >> 16) & 0xff;
            int green = (argb >> 8) & 0xff;
            int blue = argb & 0xff;

            int avg = (red + green + blue) / 3;

            int grey = 0;
            if (avg < 128) {
                grey = 0;
            } else if (avg > 128) {
                grey = 255;
            }
            // construct grey value
//            int grey = (((red * 30) / 100) + ((green * 59) / 100) + ((blue * 11) / 100)) & 0xff;
//            // reconstruct pixel with grey value - keep original alpha
            argb = (alpha << 24) | (grey << 16) | (grey << 8) | grey;
//            // put back in the pixel array
            pixels[i] = argb;

            // Nilai 128 di bawah ini dapat Anda ubah sesuai dengan kebutuhan

        }
        // create and return a new Image
        return Image.createRGBImage(pixels, width, height, true);
    }

Semoga bermanfaat.. ^^

Komentar

Posting Komentar

Terima kasih sudah membaca....^^