Notification

×

Iklan

Iklan

Source Code Java Program Digital Image Processing (JIP)

Sunday, June 14, 2020 | 21:09 WIB Last Updated 2021-07-01T01:45:36Z
Source Code Java Program Digital Image Processing (JIP)
Source Code Java Program Digital Image Processing (JIP)

KARAWANGPORTAL - Hiii Pagi sobat kali ini admin akan membagikan "Source Code Java Program Digital Image Processing (JIP)" Jadi gini pada jaman dahulu kala pernah ikut matkul yang namanya pengolahan citra atau apalah dahh agak lupa, ya gitu dah pokoknya admin di suruh dosen membuat program yang agak agak mirip photosop gitu dah pungsinya.

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)
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)
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.

×
Berita Terbaru Update