📄 simpleimageprocessor.java
字号:
/***************************************************************
*
* COMPS451F Simple Image Processor
* Written by Dr. Andrew Kwok-Fai LUI
* On 10/11/2006
*
* The application demonstrates how to perform Image Processing
* operations based on Java API.
*
*/
import java.awt.Graphics2D;
import java.io.*;
import java.awt.image.*;
import javax.swing.*;
import javax.imageio.*;
public class SimpleImageProcessor extends javax.swing.JFrame {
public SimpleImageProcessor() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {
imageDisplayer1 = new ImageDisplayer();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem2 = new javax.swing.JMenuItem();
jMenuItem1 = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
jMenuItem3 = new javax.swing.JMenuItem();
jMenu4 = new javax.swing.JMenu();
jMenuItem5 = new javax.swing.JMenuItem();
jMenuItem8 = new javax.swing.JMenuItem();
jMenuItem7 = new javax.swing.JMenuItem();
jMenuItem6 = new javax.swing.JMenuItem();
jMenuItem9 = new javax.swing.JMenuItem();
jMenu3 = new javax.swing.JMenu();
jMenuItem4 = new javax.swing.JMenuItem();
getContentPane().setLayout(new java.awt.GridLayout(1, 0));
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
setTitle("Simple image Processor");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
getContentPane().add(imageDisplayer1);
jMenu1.setText("File");
jMenuItem2.setText("Open");
jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem2ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem2);
jMenuItem1.setText("Quit");
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
jMenu1.add(jMenuItem1);
jMenuBar1.add(jMenu1);
jMenu2.setText("Image");
jMenuItem3.setText("Information");
jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem3ActionPerformed(evt);
}
});
jMenu2.add(jMenuItem3);
jMenuBar1.add(jMenu2);
jMenu4.setText("Processing");
jMenuItem5.setText("Warm");
jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem5ActionPerformed(evt);
}
});
jMenu4.add(jMenuItem5);
jMenuItem8.setText("Chill");
jMenuItem8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem8ActionPerformed(evt);
}
});
jMenu4.add(jMenuItem8);
jMenuItem7.setText("Negation");
jMenuItem7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem7ActionPerformed(evt);
}
});
jMenu4.add(jMenuItem7);
jMenuItem6.setText("Posterize");
jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem6ActionPerformed(evt);
}
});
jMenu4.add(jMenuItem6);
jMenuItem9.setText("Blur");
jMenuItem9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem9ActionPerformed(evt);
}
});
jMenu4.add(jMenuItem9);
jMenuBar1.add(jMenu4);
jMenu3.setText("Help");
jMenuItem4.setText("About");
jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem4ActionPerformed(evt);
}
});
jMenu3.add(jMenuItem4);
jMenuBar1.add(jMenu3);
setJMenuBar(jMenuBar1);
pack();
}// </editor-fold>//GEN-END:initComponents
private void jMenuItem9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem9ActionPerformed
BufferedImage image = imageDisplayer1.getImage();
BufferedImage oimage = ImageOperations.blurKernel(image);
imageDisplayer1.setImage(oimage);
}//GEN-LAST:event_jMenuItem9ActionPerformed
private void jMenuItem8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem8ActionPerformed
BufferedImage image = imageDisplayer1.getImage();
BufferedImage oimage = ImageOperations.chill(image);
imageDisplayer1.setImage(oimage);
}//GEN-LAST:event_jMenuItem8ActionPerformed
private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem7ActionPerformed
BufferedImage image = imageDisplayer1.getImage();
BufferedImage oimage = ImageOperations.negation(image);
imageDisplayer1.setImage(oimage);
}//GEN-LAST:event_jMenuItem7ActionPerformed
private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem6ActionPerformed
BufferedImage image = imageDisplayer1.getImage();
BufferedImage oimage = ImageOperations.posterize(image, 7);
imageDisplayer1.setImage(oimage);
}//GEN-LAST:event_jMenuItem6ActionPerformed
private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem5ActionPerformed
BufferedImage image = imageDisplayer1.getImage();
BufferedImage oimage = ImageOperations.warm(image);
imageDisplayer1.setImage(oimage);
}//GEN-LAST:event_jMenuItem5ActionPerformed
private void toClose() {
int result = JOptionPane.showConfirmDialog(this, "Are you sure to quit?", "Confirm", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.CANCEL_OPTION)
return; /* The Cancel button is pressed */
System.exit(0);
}
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
toClose();
}//GEN-LAST:event_formWindowClosing
private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
StringBuffer sb = new StringBuffer();
sb.append("<html>");
sb.append("Authored by Lam Kwok Yeung");
sb.append("</html>");
JOptionPane.showMessageDialog(this, sb.toString());
}//GEN-LAST:event_jMenuItem4ActionPerformed
private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
BufferedImage image = imageDisplayer1.getImage();
if (image == null) {
JOptionPane.showMessageDialog(null, "No image loaded");
return;
}
StringBuffer sb = new StringBuffer();
sb.append("<html>");
sb.append("Image Size = " + image.getWidth() + " x " + image.getHeight() + "<br>");
ColorModel cmodel = image.getColorModel();
sb.append("Colour space = " + cmodel.getColorSpace() + "<br>");
sb.append("Color components = " + cmodel.getNumColorComponents() + "<br>");
sb.append("Number of bits per pixel = " + cmodel.getPixelSize() + "<br>");
JOptionPane.showMessageDialog(this, sb.toString());
}//GEN-LAST:event_jMenuItem3ActionPerformed
private JFileChooser fileChooser = null;
private File chosenImageFile = null;
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
if (fileChooser == null) {
fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
if (chosenImageFile != null)
fileChooser.setCurrentDirectory(chosenImageFile.getParentFile());
else
fileChooser.setCurrentDirectory(new File(System.getProperty("user.dir")));
fileChooser.setDialogTitle("Select an Image File");
}
int result = fileChooser.showOpenDialog(null);
if (result == JFileChooser.CANCEL_OPTION)
return;
chosenImageFile = fileChooser.getSelectedFile();
try {
BufferedImage image = ImageIO.read(chosenImageFile);
BufferedImage source = new BufferedImage(image.getWidth(), image.getHeight(),
BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = source.createGraphics();
g2d.drawImage(image, 0, 0, null);
imageDisplayer1.setImage(source);
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, ex, "Image Read Error", JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_jMenuItem2ActionPerformed
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
toClose();
}//GEN-LAST:event_jMenuItem1ActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new SimpleImageProcessor().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private ImageDisplayer imageDisplayer1;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenu jMenu3;
private javax.swing.JMenu jMenu4;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem4;
private javax.swing.JMenuItem jMenuItem5;
private javax.swing.JMenuItem jMenuItem6;
private javax.swing.JMenuItem jMenuItem7;
private javax.swing.JMenuItem jMenuItem8;
private javax.swing.JMenuItem jMenuItem9;
// End of variables declaration//GEN-END:variables
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -