📄 panel1.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 + -