📄 imageprocess.java
字号:
import java.awt.*;
import java.awt.color.ColorSpace;
import java.awt.event.*;
import java.awt.geom.AffineTransform;
import java.awt.image.*;
public class ImageProcess implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("加亮(L)")){
float a = 1.1f;
float b = 20.0f;
RescaleOp op = new RescaleOp(a, b, null);
filter(op);
}
else if(e.getActionCommand().equals("锐化(R)")){
float[] elements = { 0.0f, -1.0f, 0.0f, -1.0f, 5.f, -1.0f, 0.0f, -1.0f, 0.0f };
convolve(elements);
convolve(elements);
}
else if(e.getActionCommand().equals("边缘(E)")){
float[] elements = { 0.0f, -1.0f, 0.0f, -1.0f, 4.f, -1.0f, 0.0f, -1.0f, 0.0f };
convolve(elements);
}
else if(e.getActionCommand().equals("模糊(M)")){
float weight = 1.0f / 9.0f;
float[] elements = new float[9];
for (int i = 0; i < 9; i++)
elements[i] = weight;
convolve(elements);
}
else if(e.getActionCommand().equals("反色(O)")){
short[] negative = new short[256 * 1];
for (int i = 0; i < 256; i++)
negative[i] = (short) (255 - i);
ShortLookupTable table = new ShortLookupTable(0, negative);
LookupOp op = new LookupOp(table, null);
filter(op);
}
else{
MenuEventClass.about.setVisible(false);
if(MenuEventClass.revolve.equals("水平翻转")){
if (image == null) return;
AffineTransform transform = AffineTransform.getRotateInstance(
Math.toRadians(0), -image.getWidth() / 2, -image.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform,
AffineTransformOp.TYPE_BICUBIC);
filter(op);
}
else if(MenuEventClass.revolve.equals("垂直翻转")){
if (image == null) return;
AffineTransform transform = AffineTransform.getRotateInstance(
Math.toRadians(180), image.getWidth() / 2, image.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform,
AffineTransformOp.TYPE_BICUBIC);
filter(op);
}
else if(MenuEventClass.revolve.equals("90度")){
if (image == null) return;
AffineTransform transform = AffineTransform.getRotateInstance(
Math.toRadians(90), image.getWidth() / 2, image.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform,
AffineTransformOp.TYPE_BICUBIC);
filter(op);
}
else if(MenuEventClass.revolve.equals("180度")){
if (image == null) return;
AffineTransform transform = AffineTransform.getRotateInstance(
Math.toRadians(180), image.getWidth() / 2, image.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform,
AffineTransformOp.TYPE_BICUBIC);
filter(op);
}
else if(MenuEventClass.revolve.equals("270度")){
if (image == null) return;
AffineTransform transform = AffineTransform.getRotateInstance(
Math.toRadians(270), image.getWidth() / 2, image.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(transform,
AffineTransformOp.TYPE_BICUBIC);
filter(op);
}
}
}
public void niuQu(float shuiping,float chuiZi){
if (image == null) return;
AffineTransform transform = AffineTransform.getShearInstance( image.getWidth() /shuiping, image.getHeight() / chuiZi);
AffineTransformOp op = new AffineTransformOp(transform,
AffineTransformOp.TYPE_BICUBIC);
filter(op);
}
private void convolve(float[] elements)
{
Kernel kernel = new Kernel(3, 3, elements);
ConvolveOp op = new ConvolveOp(kernel);
filter(op);
}
public void gray(){
ColorConvertOp cco=new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY),null);
image = cco.filter(image, null);
DrawingBoard.picture=image;
Graphics g = null;
Panel.drawCanvas.paintComponent(g);
}
private void filter(BufferedImageOp op)
{
if (image == null) return;
image = op.filter(image, null);
DrawingBoard.picture=image;
Graphics g = null;
Panel.drawCanvas.paintComponent(g);
}
protected static BufferedImage image;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -