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

📄 eimage.java

📁 JAVA编程百例书中各章节的所有例子的源代码,包括套接字编程
💻 JAVA
字号:
package ch06.section05;

import java.net.*;

import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.image.*;
import javax.swing.*;

public class EImage
    extends JApplet {

  private BufferedImage bi[];
  public static final float[] SHARPEN3x3_3 = {
      0.f, -1.f, 0.f,
      -1.f, 5.f, -1.f,
      0.f, -1.f, 0.f};

  public void init() {
    setBackground(Color.white);

    bi = new BufferedImage[4];
    String s[] = {
        "bld.jpg", "bld.jpg", "boat.gif", "boat.gif"};
    for (int i = 0; i < bi.length; i++) {
      Image img = getImage(getURL("images/" + s[i]));
      try {
        MediaTracker tracker = new MediaTracker(this);
        tracker.addImage(img, 0);
        tracker.waitForID(0);
      }
      catch (Exception e) {}
      int iw = img.getWidth(this);
      int ih = img.getHeight(this);
      bi[i] = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB);
      Graphics2D big = bi[i].createGraphics();
      big.drawImage(img, 0, 0, this);
    }
  }

  public void paint(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                        RenderingHints.VALUE_ANTIALIAS_ON);
    g2.setRenderingHint(RenderingHints.KEY_RENDERING,
                        RenderingHints.VALUE_RENDER_QUALITY);
    int w = getSize().width;
    int h = getSize().height;

    g2.setColor(Color.black);
    float[][] data = {
        {
        0.1f, 0.1f, 0.1f,
        0.1f, 0.2f, 0.1f,
        0.1f, 0.1f, 0.1f}
        ,
        SHARPEN3x3_3};

    String theDesc[] = {
        "Convolve LowPass", "Convolve Sharpen",
        "LookupOp", "RescaleOp"};
    for (int i = 0; i < bi.length; i++) {
      int iw = bi[i].getWidth(this);
      int ih = bi[i].getHeight(this);
      int x = 0, y = 0;

      AffineTransform at = new AffineTransform();
      at.scale( (w - 14) / 2.0 / iw, (h - 34) / 2.0 / ih);

      BufferedImageOp biop = null;
      BufferedImage bimg = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB);

      switch (i) {
        case 0:
        case 1:
          x = i == 0 ? 5 : w / 2 + 3;
          y = 15;
          Kernel kernel = new Kernel(3, 3, data[i]);
          ConvolveOp cop = new ConvolveOp(kernel,
                                          ConvolveOp.EDGE_NO_OP,
                                          null);
          cop.filter(bi[i], bimg);
          biop = new AffineTransformOp(at,
                                       AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
          break;
        case 2:
          x = 5;
          y = h / 2 + 15;
          byte chlut[] = new byte[256];
          for (int j = 0; j < 200; j++) {
            chlut[j] = (byte) (256 - j);
          }
          ByteLookupTable blut = new ByteLookupTable(0, chlut);
          LookupOp lop = new LookupOp(blut, null);
          lop.filter(bi[i], bimg);
          biop = new AffineTransformOp(at,
                                       AffineTransformOp.TYPE_BILINEAR);
          break;
        case 3:
          x = w / 2 + 3;
          y = h / 2 + 15;
          RescaleOp rop = new RescaleOp(1.1f, 20.0f, null);
          rop.filter(bi[i], bimg);
          biop = new AffineTransformOp(at,
                                       AffineTransformOp.TYPE_BILINEAR);
      }
      g2.drawImage(bimg, biop, x, y);
      TextLayout tl = new TextLayout(theDesc[i], g2.getFont(),
                                     g2.getFontRenderContext());
      tl.draw(g2, (float) x, (float) y - 4);
    }
  }

  protected URL getURL(String filename) {
    URL codeBase = this.getCodeBase();
    URL url = null;

    try {
      url = new URL(codeBase, filename);
    }
    catch (java.net.MalformedURLException e) {
      System.out.println("Couldn't create image: "
                         + "badly specified URL");
      return null;
    }

    return url;
  }

  public static void main(String s[]) {
    JFrame f = new JFrame("ImageOps");
    f.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
    JApplet applet = new EImage();
    f.getContentPane().add("Center", applet);
    applet.init();
    f.pack();
    f.setSize(new Dimension(550, 550));
    f.show();
  }

}

⌨️ 快捷键说明

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