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

📄 panel1.java

📁 本实例主要包括图像的模糊化
💻 JAVA
字号:
package changeimage;

import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import java.awt.color.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class Panel1
    extends JPanel {
  BorderLayout borderLayout1 = new BorderLayout();
  BufferedImage image; //定义缓冲图像类的变量,用于显示图像
  BufferedImage originalimage; //定义缓冲图像变量,用于备份原始图像

  public Panel1() {
    try {
      jbInit();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  void jbInit() throws Exception {
    this.setLayout(borderLayout1);
  }

  public void showImage(String imagename) {
    Image image1 = Toolkit.getDefaultToolkit().getImage(imagename); //调用图像
    MediaTracker tracker = new MediaTracker(this);
    tracker.addImage(image1, 0);
    try {
      tracker.waitForID(0);
    }
    catch (InterruptedException e) {}
    image = new BufferedImage(image1.getWidth(null),
                              image1.getHeight(null),
                              BufferedImage.TYPE_INT_RGB); //创建缓冲图像
    Graphics2D g2 = image.createGraphics();
    g2.drawImage(image1, 0, 0, null); //绘制图像
    originalimage = image;
  }

  public void reset() {
    image = originalimage;
    repaint();
  }

  private void filter(BufferedImageOp op) {
    BufferedImage filterImage = new BufferedImage(image.getWidth(),
                                                  image.getHeight(),
                                                  image.getType()); //创建缓冲区图像
    op.filter(image, filterImage);
    image = filterImage;
    repaint();
  }

  public void imageToGray() {
    ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY); //创建色彩空间对象
    ColorConvertOp op = new ColorConvertOp(cs, null); //创建颜色转换过滤器
    filter(op);
  }

  public void sharpImage() { //图像锐化
    float data[] = {
         -1.0f, -1.0f, -1.0f,
        -1.0f, 9.0f, -1.0f,
        -1.0f, -1.0f, -1.0f};
    Kernel kernel = new Kernel(3, 3, data); //创建卷积核对象
    ConvolveOp op = new ConvolveOp(kernel); //创建卷积过滤器实例
    filter(op);
  }

  public void blurImage() { //图像模糊化
    float data[] = {
        1.0f / 9.0f, 1.0f / 9.0f, 1.0f / 9.0f,
        1.0f / 9.0f, 1.0f / 9.0f, 1.0f / 9.0f,
        1.0f / 9.0f, 1.0f / 9.0f, 1.0f / 9.0f};
    Kernel kernel = new Kernel(3, 3, data); //创建卷积核对象
    ConvolveOp op = new ConvolveOp(kernel); //创建卷积过滤器实例
    filter(op);
  }

  public void edgeImage() { //图像边缘变换
    float data[] = {
        0.0f, -1.0f, 0.0f,
        -1.0f, 4.0f, -1.0f,
        0.0f, -1.0f, 0.0f};
    Kernel kernel = new Kernel(3, 3, data); //创建卷积核对象
    ConvolveOp op = new ConvolveOp(kernel); //创建卷积过滤器实例
    filter(op);
  }

  protected void paintComponent(Graphics g) { //重载paintComponent方法
    /**@todo Override this javax.swing.JComponent method*/
    super.paintComponent(g);
    if (image != null) {
      g.drawImage(image, 0, 0, null);
    }
  }

}

⌨️ 快捷键说明

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