Vous êtes sur la page 1sur 6

CONTOH PROGRAM THRESHOLDING

MENGGUNAKAN BAHASA PEMROGRAMAN JAVA

SCREEN SHOT :

Gambar (1) Tampilan Awal Program

Gambar (2) Tampilan Menu “Open” File


Gambar (3) Tampilan gambar yang dipilih

Gambar (4) Tampilan gambara yang telah di konversi


CODING :

a. Form.java

package app.java.thresholding;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

public class Form extends javax.swing.JFrame implements ActionListener{

ImageChooser imgChooser = new ImageChooser();


/** Creates new form Form */
public Form() {
setTitle("Thresholding Processing With Java");

initComponents();
itemOpen.setActionCommand("open");
itemOpen.addActionListener(this);
}

private void btnConvertActionPerformed (java.awt.event.ActionEvent evt)


{
try
{
File fail = imgChooser.getSelectedFile ();
BufferedImage pic = ImageIO.read (fail);
int threshold = 127;
int red;
int green;
int blue;
int rgb;
int gray = 0;
int width = pic.getWidth ();
int height = pic.getHeight ();
BufferedImage im = new BufferedImage (width,height,BufferedImage.TYPE_BYTE_GRAY);
WritableRaster raster = im.getRaster ();

for(int i=0; i<pic.getWidth (); i++)


{
for(int j=0; j<pic.getHeight (); j++)
{
rgb = pic.getRGB (i, j);
red = rgb & 0x000000ff;
green = (rgb & 0x0000ff00) >> 8;
blue = (rgb & 0x00ff0000) >> 16;
double avg = (double) (0.299 * red + 0.587 * green + 0.114 * blue);
if (avg > threshold)
{
gray = 255;
}
else if (avg < threshold)
{
gray = 0;
}
int biner = gray+(gray<<8)+(gray<<16);
raster.setSample (i, j, 0, biner);
}
}
ImageIO.write (im,"PNG",new File ("newGray.png"));
ImageIcon ikon = new ImageIcon ("newGray.png");
lblGray.setIcon (ikon);
}
catch (IOException ex)
{
Logger.getLogger (Form.class.getName ()).log (Level.SEVERE, null, ex);
}
}

private void itemExitActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
System.exit(0);
}

public void actionPerformed(ActionEvent e) {


int result;
if (e.getActionCommand().equals("open")) {
result = imgChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
File file = imgChooser.getSelectedFile();
ImageIcon icon = new ImageIcon(file.getPath());
lblRgb.setIcon(icon);
}
}
}

}
b. imageChooser.java
package app.java.thresholding;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class ImageChooser extends JFileChooser{

private JLabel labelImage;


public ImageChooser() {
super();
setFileFilter(new ImageFilter());

labelImage = new JLabel("", JLabel.CENTER);

JScrollPane pane = new JScrollPane(labelImage);

JPanel panel = new JPanel(new java.awt.BorderLayout());


panel.setPreferredSize(new java.awt.Dimension(300, 300));
panel.add(pane);

setAccessory(panel);

addPropertyChangeListener(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY, new
PropertyChangeListener() {

public void propertyChange(PropertyChangeEvent evt) {


if (getSelectedFile() != null) {
if (!getSelectedFile().isDirectory()) {
ImageIcon icon = new ImageIcon(getSelectedFile().getPath());
labelImage.setIcon(icon);
}
}
}
});
}
}
c. ImageFilter.java
package app.java.thresholding;

import java.io.File;
import javax.swing.filechooser.FileFilter;

public class ImageFilter extends FileFilter{

@Override
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
String name = f.getName().toUpperCase();
if (name.endsWith(".JPG") || name.endsWith(".PNG") || name.endsWith(".GIF") ||
name.endsWith(".BMP")) {
return true;
}
return false;
}

@Override
public String getDescription() {
return "Image File (JPG, PNG, GIF, BMP)";
}
}

d. Main.java
public class Main {
private static Form form;
public static void main(String[] args) {
WidgetUtilities.invokeLater(new Runnable() {

public void run() {


try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedLookAndFeelException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
form = new Form();
form.setVisible(true);
}
});
}
}

Vous aimerez peut-être aussi