【Java开源代码栏目提醒】:本文主要为网学会员提供BlurTest.java,希望对需要BlurTest.java网友有所帮助,学习一下!
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;
public class BlurTest extends Applet implements ActionListener
{
// 原始和模糊后的BufferedImage
private BufferedImage sourceImage;
private BufferedImage destImage;
// 用来接受文件名的文本域
private TextField input;
public void init()
{
// 创建一个布局并添加文本域和"Ok"按钮
setLayout(new BorderLayout());
Panel p = new Panel();
input = new TextField("", 20);
p.add(input);
Button ok = new Button("Ok");
ok.addActionListener(this);
p.add(ok);
add(p, BorderLayout.SOUTH);
}
public void paint(Graphics g)
{
// 把传入的Graphics容器转换为一个可用的 Graphics2D 对象
Graphics2D g2d = (Graphics2D)g;
// 如果文本框中只有空格的话绘制一个友好的输入文件名的提示
if("".equals(input.getText().trim()))
{
g2d.drawString("Enter a filename to blur", 10, 50);
return;
}
// 加载输入的图像
MediaTracker mt = new MediaTracker(this);
Image img = getImage(getCodeBase(), input.getText());
mt.addImage(img, 0);
try
{
// 在进行下一步前等待直到图像完全加载
mt.waitForID(0);
}
catch(InterruptedException e) { /* 什么也不做 */ }
// 我们的模糊操作需要一个BufferedImage对象,
//所以把输入图像绘制到一个新的BufferedImage对象
sourceImage = new BufferedImage(img.getWidth(this),
img.getHeight(this),
BufferedImage.TYPE_INT_RGB);
sourceImage.createGraphics().drawImage(img, null, this);
// 创建目的图像
destImage = new BufferedImage(sourceImage.getWidth(this),
sourceImage.getHeight(this),
BufferedImage.TYPE_INT_RGB);
// 模糊输入图像
blur(sourceImage, destImage, 0.1f, 3, 3);
// 绘制源图像和目标图像
AffineTransform at = new AffineTransform();
int width = sourceImage.getWidth(this);
g2d.drawImage(sourceImage, at, this);
at.translate(width+20, 0);
g2d.drawImage(destImage, at, this);
}
// 使用ConvolveOp操作模糊图像
public void blur(
BufferedImage sourceImage, // 输入图像数据
BufferedImage destImage, // 输出图像数据
float weight, // Kernel 数据的权重
int width, // Kernel 的宽
int height // Kernel 的高
)
{
// Kernel数据数组
float[] elements = new float[width*height];
// 用权重填充数组
java.util.Arrays.fill(elements, weight);
// 使用元素数组的和宽、高来创建一个Kernel对象
Kernel k = new Kernel(width, height, elements);
ConvolveOp blurOp = new ConvolveOp(k);
// 模糊图像
blurOp.filter(sourceImage, destImage);
}
public void actionPerformed(ActionEvent e)
{
// "Ok" 按钮被按下;更新
repaint();
}
} // BlurTest