⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imageprocessor.java

📁 learning java的源代码。书中每个实例都有相关的代码example。
💻 JAVA
字号:
//file: ImageProcessor.javaimport java.awt.*;import java.awt.event.*;import java.awt.geom.*;import java.awt.image.*;import javax.swing.*;public class ImageProcessor extends JComponent {  private BufferedImage source, destination;  private JComboBox options;  public ImageProcessor(BufferedImage image) {    source = destination = image;    setBackground(Color.white);    setLayout(new BorderLayout(  ));    // create a panel to hold the combo box    JPanel controls = new JPanel(  );    // create the combo box with the names of the area operators    options = new JComboBox(      new String[] { "[source]", "brighten",          "darken", "rotate", "scale" }    );    // perform some processing when the selection changes    options.addItemListener(new ItemListener(  ) {      public void itemStateChanged(ItemEvent ie) {        // retrieve the selection option from the combo box        String option = (String)options.getSelectedItem(  );        // process the image according to the selected option        BufferedImageOp op = null;        if (option.equals("[source]"))          destination = source;        else if (option.equals("brighten"))          op = new RescaleOp(1.5f, 0, null);        else if (option.equals("darken"))          op = new RescaleOp(.5f, 0, null);        else if (option.equals("rotate"))          op = new AffineTransformOp(              AffineTransform.getRotateInstance(Math.PI / 6), null);        else if (option.equals("scale"))          op = new AffineTransformOp(              AffineTransform.getScaleInstance(.5, .5), null);        if (op != null) destination = op.filter(source, null);        repaint(  );      }    });    controls.add(options);    add(controls, BorderLayout.SOUTH);  }  public void paintComponent(Graphics g) {    int imageWidth = destination.getWidth(  );    int imageHeight = destination.getHeight(  );    int width = getSize(  ).width;    int height = getSize(  ).height;    g.drawImage(destination,        (width - imageWidth) / 2, (height - imageHeight) / 2, null);  }  public static void main(String[] args) {    String filename = args[0];    // load the image    Image i = Toolkit.getDefaultToolkit(  ).getImage(filename);    Component c = new Component(  ) {};    MediaTracker tracker = new MediaTracker(c);    tracker.addImage(i, 0);    try { tracker.waitForID(0); }    catch (InterruptedException ie) {}    // draw the Image into a BufferedImage    int w = i.getWidth(null), h = i.getHeight(null);    BufferedImage bi = new BufferedImage(w, h,        BufferedImage.TYPE_INT_RGB);    Graphics2D imageGraphics = bi.createGraphics(  );    imageGraphics.drawImage(i, 0, 0, null);    // create a frame window    JFrame f = new JFrame("ImageProcessor");    f.addWindowListener(new WindowAdapter(  ) {      public void windowClosing(WindowEvent e) { System.exit(0); }    });    Container content = f.getContentPane(  );    content.setLayout(new BorderLayout(  ));    content.add(new ImageProcessor(bi));    f.setSize(bi.getWidth(), bi.getHeight(  ));    f.setLocation(100, 100);    f.setVisible(true);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -