Source Code Java Program Digital Image Processing (JIP) |
oke penampakannya liat aja dulu kurang lebih memiliki fitur - fitur seperti :
Nah kalau kita liat fitur - fiturnya
Source Code Java Program Digital Image Processing (JIP) |
BAGIAN 1
- file memiliki submenu sebagai berikut
Open = berpungsi untuk mengambil image yang mau di rubah warna sesuai Fitur "Filter"
Save = ya sepertibiasa saving akhir dari proses image yang sudah dilakukan (JIP) Java Image Prosesing.
Exit = Keluar atau out aplikasi
BAGIAN 2
- Menu Filter memiliki submenu sebagai berikut
Gray Scal
Blur
Sharpen
Brigthen
Edghten
Edge Detected
Negatif
Rotate
Scale
BAGIAN 3
- Menu About yang berikan bagian keterang dari Aplikasi ini.
Nah sampai disini kita baru akan memulai ngoding oke langsung aja disimak
Proses Pembuatan disini kita membutuhkan 3 class
ImagePanel.java
ImageProcesingFrame
PengolahanCItra.java
Nah dalam bagian ini kita harus perhatikan dalam penulisan class u know thet lah di java amat sangat sensitif sekali dalam hal penamaan class dan variabel.
Lets to Time Creating Class ImagePanel.java
------------------------------------------------------------------------------------------------------------
/*
* DILARANG MERUBAH ATAU MENGHAPUS HAK CIPTA INI
* -----------------------------------------------------------------------
* Hakcipta www.ilmubiner.com
* Semua isi dalam file ini adalah hak milik www.ilmubiner.com
* anda tidak diperkenenkan untuk menggunakan file atau merubah file ini
* kecuali anda tidak merubah atu menghapus hak cipta ini
*
* Pemilik tidak bertanggung jawwab jika anda menyalahgunakan file ini
* Pemilik tidak menjamin apapuna atas file ini
*
* Anda bisa menghubungi pemilik hak cipta ini
* email : ilmubiner.com
* blog : www.ilmubiner.com
* -----------------------------------------------------------------------
*/
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.color.ColorSpace;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.awt.image.ByteLookupTable;
import java.awt.image.ColorConvertOp;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
import java.awt.image.LookupOp;
import java.awt.image.RescaleOp;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
public class ImagePanel extends JPanel{
private BufferedImage image;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if(image!=null){
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
}
}
public void loadImage(String name){
Image loadImage=Toolkit.getDefaultToolkit().getImage(name);
MediaTracker tracker=new MediaTracker(this);
tracker.addImage(loadImage, 0);
try{
tracker.waitForID(0);
}catch(InterruptedException e){
}
image=new BufferedImage(loadImage.getWidth(null), loadImage.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2=image.createGraphics();
g2.drawImage(loadImage, 0, 0, null);
repaint();
}
public void saveImage(){
JFileChooser chooser=new JFileChooser();
chooser.setCurrentDirectory(new File("."));
int r=chooser.showSaveDialog(this);
if(r==JFileChooser.APPROVE_OPTION){
File sf=chooser.getSelectedFile();
try{
ImageIO.write(image, "png", sf);
}catch(Exception ex){
System.out.println(ex);
}
}
}
public void filter(BufferedImageOp op){
BufferedImage filteredImage=new BufferedImage(image.getWidth(), image.getHeight(), image.getType());
op.filter(image, filteredImage);
image=filteredImage;
repaint();
}
private void convolve(float []elemnts){
Kernel kernel=new Kernel(3, 3, elemnts);
ConvolveOp op=new ConvolveOp(kernel);
filter(op);
}
public void blur(){
float weight=1.0f/9.0f;
float []elements=new float[9];
for(int i=0;i<9;i++){
elements[i]=weight;
}
convolve(elements);
}
public void sharpen(){
float []elements={0.0f,-1.0f,0.0f,-1.0f,5.f,-1.0f,0.0f,-1,0f,0.0f };
convolve(elements);
}
void edgeDetect(){
float []elements={0.0f,-1.0f,0.0f,-1.0f,4.f,-1.0f,0.0f,-1.0f,0.0f};
convolve(elements);
}
public void brighten(){
float a=1.5f;
float b=-20.0f;
RescaleOp op=new RescaleOp(a, b, null);
filter(op);
}
void negatif(){
byte negatif[]=new byte[256];
for(int i=0;i<256;i++){
negatif[i]=(byte)(256-i);
}
ByteLookupTable table=new ByteLookupTable(0, negatif);
LookupOp op=new LookupOp(table, null);
filter(op);
}
void rotate() {
AffineTransform transform = AffineTransform.getRotateInstance(Math.toRadians(5),
image.getWidth() / 2, image.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform,
AffineTransformOp.TYPE_BILINEAR);
filter(op);
}
void scale() {
AffineTransform transform = AffineTransform.getScaleInstance(2, 2);
AffineTransformOp op = new AffineTransformOp(transform,
AffineTransformOp.TYPE_BILINEAR);
filter(op);
}
void gray(){
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorConvertOp op = new ColorConvertOp(cs, null);
filter(op);
}
}
------------------------------------------------------------------------------------------------------
Lets to Time Creating Class ImageProcesingFrame.java
------------------------------------------------------------------------------------------------------
/*
* DILARANG MERUBAH ATAU MENGHAPUS HAK CIPTA INI
* -----------------------------------------------------------------------
* Hakcipta www.ilmubiner.com
* Semua isi dalam file ini adalah hak milik www.ilmubiner.com
* anda tidak diperkenenkan untuk menggunakan file atau merubah file ini
* kecuali anda tidak merubah atu menghapus hak cipta ini
*
* Pemilik tidak bertanggung jawwab jika anda menyalahgunakan file ini
* Pemilik tidak menjamin apapuna atas file ini
*
* Anda bisa menghubungi pemilik hak cipta ini
* email : ilmubiner.com
* blog : www.ilmubiner.com
* -----------------------------------------------------------------------
*/
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
public class ImageProcesingFrame extends JFrame implements ActionListener{
private ImagePanel panel,panel2;
private JMenuItem openItem,grayItem;
private JMenuItem saveItem;
private JMenuItem exitItem;
private JMenuItem blurItem;
private JMenuItem sharpenItem;
private JMenuItem brightenItem;
private JMenuItem edgeDetectItem;
private JMenuItem negatifItem;
private JMenuItem roteteItem;
private JMenuItem aboutItem;
private JMenuItem scaleItem;
public ImageProcesingFrame() throws HeadlessException {
setTitle("4l dkid R3b3l");
Dimension screeen_size=Toolkit.getDefaultToolkit().getScreenSize();
int lebar=1000;
int panjang=700;
setPreferredSize(new java.awt.Dimension(lebar, panjang));
setBackground(BACKGROUND_COLOR);
setBounds((screeen_size.width-lebar)/2,
(screeen_size.height-panjang)/2,lebar,panjang);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//container get conten pen();
panel=new ImagePanel();
panel2=new ImagePanel();
JMenu fileMenu=new JMenu("File");
openItem=new JMenuItem("Open");
openItem.addActionListener(this);
fileMenu.add(openItem);
saveItem=new JMenuItem("save");
saveItem.addActionListener(this);
fileMenu.add(saveItem);
exitItem=new JMenuItem("Exit");
exitItem.addActionListener(this);
fileMenu.add(exitItem);
JMenu editMenu=new JMenu("Filter");
grayItem=new JMenuItem("gray Scal");
grayItem.addActionListener(this);
editMenu.add(grayItem);
blurItem=new JMenuItem("Blur");
blurItem.addActionListener(this);
editMenu.add(blurItem);
sharpenItem=new JMenuItem("Sharpen");
sharpenItem.addActionListener(this);
editMenu.add(sharpenItem);
brightenItem=new JMenuItem("Brighten");
brightenItem.addActionListener(this);
editMenu.add(brightenItem);
edgeDetectItem=new JMenuItem("Edge Detect");
edgeDetectItem.addActionListener(this);
editMenu.add(edgeDetectItem);
negatifItem=new JMenuItem("Negatif");
negatifItem.addActionListener(this);
editMenu.add(negatifItem);
roteteItem=new JMenuItem("Rotate");
roteteItem.addActionListener(this);
editMenu.add(roteteItem);
scaleItem=new JMenuItem("Scale");
scaleItem.addActionListener(this);
editMenu.add(scaleItem);
JMenu help=new JMenu("About");
aboutItem=new JMenuItem("about");
aboutItem.addActionListener(this);
help.add(aboutItem);
JMenuBar menuBar=new JMenuBar();
menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(help);
setJMenuBar(menuBar);
setLayout(new GridLayout(1, 2));
add(panel2);
add(panel);
}
@Override
public void actionPerformed(ActionEvent e) {
Object source=e.getSource();
if(source==openItem){
JFileChooser choser=new JFileChooser();
choser.setCurrentDirectory(new File("."));
choser.setFileFilter(new javax.swing.filechooser.FileFilter() {
@Override
public boolean accept(File f) {
String name=f.getName().toLowerCase();
return name.endsWith(".gif")||name.endsWith(".jpg")||
name.endsWith(".jpeg")||name.endsWith(".bmp")||
name.endsWith(".png")||name.endsWith(".tiff")||
f.isDirectory();
}
@Override
public String getDescription() {
return "*.gif,*.jpg,*.jpeg,*.bmp,*.png,*.tiff";
}
});
int r=choser.showOpenDialog(this);
if(r==JFileChooser.APPROVE_OPTION){
String name=choser.getSelectedFile().getAbsolutePath();
panel.loadImage(name);
panel2.loadImage(name);
}
}else if (source == saveItem) {
panel.saveImage();
} else if (source == exitItem) {
System.exit(0);
} else if (source == blurItem) {
panel.blur();
} else if (source == sharpenItem) {
panel.sharpen();
} else if (source == brightenItem) {
panel.brighten();
} else if (source == edgeDetectItem) {
panel.edgeDetect();
} else if (source == negatifItem) {
panel.negatif();
} else if (source == roteteItem) {
panel.rotate();
} else if (source == aboutItem){
JOptionPane.showMessageDialog(this,
"Java Image Processing (JIP) adalah demo aplikasi pengolahan citra \n" +
"sederhana menggunakan pemrograman Java\n\n" +
"Aplikasi ini adalah Open Source dan dibuat oleh :\n" +
"- 4l dkid R3b3l(111100042)\n" +
" alidkidrebel@gmail.com\n",
"Tentang JIP",
JOptionPane.INFORMATION_MESSAGE);
} else if (source == scaleItem){
panel.scale();
} else if (source == grayItem){
panel.gray();
}
}
private static final Color BACKGROUND_COLOR=new Color(0x30, 0x30, 0x50);
}
--------------------------------------------------------------------------------------------------------------
Lets to Time Creating Class PengolahanCItra.java
--------------------------------------------------------------------------------------------------------------
/*
* DILARANG MERUBAH ATAU MENGHAPUS HAK CIPTA INI
* -----------------------------------------------------------------------
* Hakcipta www.ilmubiner.com
* Semua isi dalam file ini adalah hak milik www.ilmubiner.com
* anda tidak diperkenenkan untuk menggunakan file atau merubah file ini
* kecuali anda tidak merubah atu menghapus hak cipta ini
*
* Pemilik tidak bertanggung jawwab jika anda menyalahgunakan file ini
* Pemilik tidak menjamin apapuna atas file ini
*
* Anda bisa menghubungi pemilik hak cipta ini
* email : ilmubiner.com
* blog : www.ilmubiner.com
* -----------------------------------------------------------------------
*/
//package ali.pengolahan.citra;//
import com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class PengolahanCItra {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
SwingUtilities.invokeLater(new Runnable(){
public void run(){
try {
UIManager.setLookAndFeel(new NimbusLookAndFeel());
JFrame frame = new ImageProcesingFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
} catch (UnsupportedLookAndFeelException ex) {
Logger.getLogger(PengolahanCItra.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
}
Source Code Java Program Digital Image Processing (JIP) |
Nah diatas adalah Source Code Java Program Digital Image Processing (JIP)
terdiri dari 3 class, class untuk memanggil atau memproses aplikasi tersebut ada di class PengolahanCItra.java. Sampai disini kita sudah membuat Aplikasi sederhana Digital Image Processing (JIP), Semoga bermanfaat berikan komentar jika terjadi kesalahan
Baca Juga : Source Code Program Java Bitmap Frame
No comments:
Post a Comment
Karawang Portal | adalah tempat belajar blogger pemula dan profesional. Kamu bisa menemukan kami di sosial media berikut.
Note: Only a member of this blog may post a comment.