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

📄 panel1.java

📁 用纯java技术实现了对图像锐化、模糊、边缘、灰度等操作功能
💻 JAVA
字号:
package imageproc;

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import javax.swing.*;

import java.awt.color.*;
import java.awt.event.*;

/**
 * <p>Title: ImageProc Demo</p>
 * <p>Description: this is a ImageProc demo</p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
public class Panel1 extends JPanel
{
  BufferedImage image,bakimage;
  BorderLayout borderLayout1=new BorderLayout();
 public int imageWidth,imageHeight;
  public Panel1()
  {
    try{
      jbInit();
    }
    catch(Exception ex){
      ex.printStackTrace();
    }
  }
  void jbInit() throws Exception
  {
    this.setBackground(new Color(236, 223, 249));
    this.setLayout(borderLayout1);
   // this.setSize(imageWidth,imageHeight);
   imageWidth=this.getWidth();
   imageHeight=this.getHeight();
  // System.out.print(imageWidth+"lllll"+imageHeight);
  }
  protected void paintComponent(Graphics g)
  {
    /**@todo Override this javax.swing.JComponent method*/
    super.paintComponent(g);
    if(image!=null)
      g.drawImage(image,0,0,null);
  }
  public void loadImage(String name)
  {
    Image loadedImage=Toolkit.getDefaultToolkit().getImage(name);
    MediaTracker tracker=new MediaTracker(this);
    tracker.addImage(loadedImage,0);
    try{
      tracker.waitForID(0);}
    catch(InterruptedException e){}
    //调入图像缓冲
    image=new BufferedImage(loadedImage.getWidth(null),loadedImage.getHeight(null),
          BufferedImage.TYPE_INT_RGB);

    Graphics2D g2=image.createGraphics();
     //g2.drawImage(loadedImage,0,0,imageWidth,imageHeight,null);
   g2.drawImage(loadedImage,0,0,400,300,null);
   // g2.drawImage(loadedImage,0,0,null);
    bakimage=image; //备份图像,用于恢复图像
//System.out.print(loadedImage.getWidth(null)+"ccccc"+loadedImage.getHeight(null));
    repaint();
  }

  public void filter(BufferedImageOp op)
  {
    BufferedImage filteredImage=new BufferedImage(image.getWidth(),
                                image.getHeight(),
                                image.getType());
    op.filter(image,filteredImage); //过滤图像
    image=filteredImage; //画出过滤后的图像
    repaint();
  }
  public void restore()
  { //恢复原始图像
    image=bakimage;
    repaint();
  }
  public void convolve(float[] elements)
  { //用于一个卷积公式的转换
    Kernel kernel=new Kernel(3,3,elements);
    ConvolveOp op=new ConvolveOp(kernel);
    filter(op);
  }
  public void blur()
  { //模糊图像
    float weight=1.0f/9.0f;
    float[] elements={0.0625f,0.125f,0.0625f,
                        0.125f,0.25f,0.125f,
                         0.0625f,0.125f,0.0625f};
    convolve(elements);
  }
  void edgeDetect()
  {
    //实现边界处理
    float[] elements={
                     0.0f,-1.0f,0.0f,
                     -1.0f,4.0f,-1.0f,
                     0.0f,-1.0f,0.0f};
    convolve(elements);
  }
  void toGray()
  {
    //灰度变化
    ColorSpace myColor=ColorSpace.getInstance(ColorSpace.CS_GRAY);
    ColorConvertOp op=new ColorConvertOp(myColor,null);
    filter(op);
  }
  public void brighten()
  {
    //加亮图像
    float a=1.5f;
    float b=-20.0f;
    RescaleOp op=new RescaleOp(a,b,null);
    filter(op);
  }
  public void acuteness()
  {
    //锐化处理
    float data[]={-1.0f,-1.0f,-1.0f,
                 -1.0f,10.0f,-1.0f,
                 -1.0f,-1.0f,-1.0f,};
        convolve(data);
  }
  }

⌨️ 快捷键说明

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