Mega Code Archive

 
Categories / Java / 2D Graphics GUI
 

Image Processing

import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; public class TRescaleOp extends JFrame {     DisplayPanel displayPanel;     JButton brightenButton, darkenButton,             contIncButton, contDecButton;          public TRescaleOp() {         super();         Container container = getContentPane();         displayPanel = new DisplayPanel();         container.add(displayPanel);         JPanel panel = new JPanel();         panel.setLayout(new GridLayout(2, 2));         panel.setBorder(new TitledBorder(             "Click a Button to Perform the Associated Operation..."));         brightenButton = new JButton("Brightness >>");         brightenButton.addActionListener(new ButtonListener());         darkenButton = new JButton("Brightness <<");         darkenButton.addActionListener(new ButtonListener());         contIncButton = new JButton("Contrast >>");         contIncButton.addActionListener(new ButtonListener());         contDecButton = new JButton("Contrast <<");         contDecButton.addActionListener(new ButtonListener());         panel.add(brightenButton);         panel.add(darkenButton);         panel.add(contIncButton);         panel.add(contDecButton);         container.add(BorderLayout.SOUTH, panel);         addWindowListener(new WindowEventHandler());         setSize(displayPanel.getWidth(), displayPanel.getHeight() + 10);         show(); // Display the frame     }     class WindowEventHandler extends WindowAdapter {         public void windowClosing(WindowEvent e) {             System.exit(0);         }     }     public static void main(String arg[]) {         new TRescaleOp();     }     class ButtonListener implements ActionListener {         public void actionPerformed(ActionEvent e) {             JButton temp = (JButton) e.getSource();             if (temp.equals(brightenButton)) {                 displayPanel.brighten = true;                 displayPanel.changeOffSet();                 System.out.println(displayPanel.offset + "=offset");                 displayPanel.rescale();                 displayPanel.repaint();             }             else if (temp.equals(darkenButton)) {                 displayPanel.brighten = false;                 displayPanel.changeOffSet();                 System.out.println(displayPanel.offset + "=offset");                 displayPanel.rescale();                 displayPanel.repaint();             }             else if (temp.equals(contIncButton)) {                 displayPanel.contrastInc = true;                 displayPanel.changeScaleFactor();                 System.out.println(displayPanel.scaleFactor + "=scaleF");                 displayPanel.rescale();                 displayPanel.repaint();             }             else if (temp.equals(contDecButton)) {                 displayPanel.contrastInc = false;                 displayPanel.changeScaleFactor();                 System.out.println(displayPanel.scaleFactor + "=scaleF");                 displayPanel.rescale();                 displayPanel.repaint();             }         }     } } class DisplayPanel extends JPanel {     Image displayImage;     BufferedImage biSrc, biDest, bi;      Graphics2D big;     RescaleOp rescale;     float scaleFactor = 1.0f;     float offset = 10;     boolean brighten, contrastInc;     DisplayPanel() {         setBackground(Color.black);          loadImage();         setSize(displayImage.getWidth(this),                 displayImage.getWidth(this));         createBufferedImages();     }     public void loadImage() {         displayImage = Toolkit.getDefaultToolkit().getImage("largerntsoftLogo.jpg");         MediaTracker mt = new MediaTracker(this);         mt.addImage(displayImage, 1);         try {             mt.waitForAll();         } catch (Exception e) {             System.out.println("Exception while loading.");         }           if (displayImage.getWidth(this) == -1) {             System.out.println("No jpg file");             System.exit(0);         }     }     public void createBufferedImages() {         biSrc = new BufferedImage(displayImage.getWidth(this),                                   displayImage.getHeight(this),                                   BufferedImage.TYPE_INT_RGB);         big = biSrc.createGraphics();         big.drawImage(displayImage, 0, 0, this);         biDest = new BufferedImage(displayImage.getWidth(this),                                    displayImage.getHeight(this),                                    BufferedImage.TYPE_INT_RGB);         bi = biSrc;     }     public void changeOffSet() {         if (brighten) {             if (offset < 255)                offset = offset+5.0f;         }         else {             if (offset > 0)                offset = offset-5.0f;         }     }     public void changeScaleFactor() {         if (contrastInc) {             if (scaleFactor < 2)                 scaleFactor = scaleFactor+0.1f;         }         else {             if (scaleFactor > 0)                 scaleFactor = scaleFactor-0.1f;         }     }     public void rescale() {         rescale = new RescaleOp(scaleFactor, offset, null);         rescale.filter(biSrc, biDest);         bi = biDest;     }     public void update(Graphics g) {         g.clearRect(0, 0, getWidth(), getHeight());         paintComponent(g);     }     public void paintComponent(Graphics g) {         super.paintComponent(g);         Graphics2D g2D = (Graphics2D) g;         g2D.drawImage(bi, 0, 0, this);     } }