Java DIP - Konversi GrayScale
Untuk mengubah gambar berwarna menjadi gambar Grayscale, Anda perlu membaca piksel atau data gambar menggunakan File dan ImageIO objek, dan simpan gambar di BufferedImageobyek. Sintaksnya diberikan di bawah ini -
File input = new File("digital_image_processing.jpg");
BufferedImage image = ImageIO.read(input);
Selanjutnya, dapatkan nilai piksel menggunakan metode getRGB()dan melakukan metode GrayScale () di atasnya. Metode getRGB () menggunakan indeks baris dan kolom sebagai parameter.
Color c = new Color(image.getRGB(j, i));
int red = (c.getRed() * 0.299);
int green =(c.getGreen() * 0.587);
int blue = (c.getBlue() *0.114);
Terlepas dari ketiga metode ini, ada metode lain yang tersedia di kelas Color seperti yang dijelaskan secara singkat -
Sr.No. | Metode & Deskripsi |
---|---|
1 | brighter() Ini menciptakan Warna baru yang merupakan versi yang lebih cerah dari Warna ini. |
2 | darker() Ini menciptakan Warna baru yang merupakan versi lebih gelap dari Warna ini. |
3 | getAlpha() Ini mengembalikan komponen alfa dalam kisaran 0-255. |
4 | getHSBColor(float h, float s, float b) Ini membuat objek Warna berdasarkan nilai yang ditentukan untuk model warna HSB. |
5 | HSBtoRGB(float hue, float saturation, float brightness) Ini mengubah komponen warna, seperti yang ditentukan oleh model HSB, menjadi sekumpulan nilai yang setara untuk model RGB default. |
6 | toString() Ini mengembalikan representasi string dari Warna ini. |
Langkah terakhir adalah menambahkan ketiga nilai ini dan mengaturnya kembali ke nilai piksel yang sesuai. Sintaksnya diberikan di bawah ini -
int sum = red+green+blue;
Color newColor = new Color(sum,sum,sum);
image.setRGB(j,i,newColor.getRGB());
Contoh
Contoh berikut menunjukkan penggunaan kelas BufferedImage Java yang mengonversi gambar menjadi Grayscale -
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
public class GrayScale {
BufferedImage image;
int width;
int height;
public GrayScale() {
try {
File input = new File("digital_image_processing.jpg");
image = ImageIO.read(input);
width = image.getWidth();
height = image.getHeight();
for(int i=0; i<height; i++) {
for(int j=0; j<width; j++) {
Color c = new Color(image.getRGB(j, i));
int red = (int)(c.getRed() * 0.299);
int green = (int)(c.getGreen() * 0.587);
int blue = (int)(c.getBlue() *0.114);
Color newColor = new Color(red+green+blue,
red+green+blue,red+green+blue);
image.setRGB(j,i,newColor.getRGB());
}
}
File ouptut = new File("grayscale.jpg");
ImageIO.write(image, "jpg", ouptut);
} catch (Exception e) {}
}
static public void main(String args[]) throws Exception {
GrayScale obj = new GrayScale();
}
}
Keluaran
Saat Anda menjalankan contoh yang diberikan, gambar akan diubah digital_image_processing.jpg ke gambar Grayscale yang setara dan menuliskannya di hard disk dengan nama grayscale.jpg.