2000年7月5日更新(新規作成)
関谷トップページへ
CGトップページへ
戻る(Java8章ページへ)
このプログラムを実行のページへ
中山、例GraphicsG22t.java 画像のフィルタ処理(ConvolveOp)(Applet版)
//GraphicsG22t.java 画像のフィルタ処理(ConvolveOp)
// Applet プログラムへの移植 2000.7.5 KPC sekiya(appletviewerでしか実行できない)
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.applet.*; // 1 add
public class GraphicsG22t extends Applet implements AdjustmentListener {
BufferedImage bi;
Scrollbar sb,sb1,sb2;
int k,k1,k2;
public void init(){ // GraphicsG22() {
setBackground(Color.white); // from main()
setLayout(new BorderLayout()); // add for Applet
sb=new Scrollbar(Scrollbar.HORIZONTAL,10,10,-500,500);
add("South",sb);
sb.addAdjustmentListener(this);
sb1=new Scrollbar(Scrollbar.VERTICAL,10,10,-100,100);
add("East",sb1);
sb1.addAdjustmentListener(this);
sb2=new Scrollbar(Scrollbar.VERTICAL,10,10,-100,100);
add("West",sb2);
sb2.addAdjustmentListener(this);
// Image img=getToolkit().getImage("Beach4.jpg");
Image img=getImage(getDocumentBase(), "Beach4.jpg"); // for Applet
try {
MediaTracker mt=new MediaTracker(this);
mt.addImage(img, 0);
mt.waitForID(0);
}
catch ( Exception e ) {}
int iw,ih;
iw=img.getWidth(this);
ih=img.getHeight(this);
bi=new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB);
Graphics2D big=bi.createGraphics();
big.drawImage(img,0,0,this);
// addWindowListener(new WinAdapter());
}
/* public static void main(String ar[]) {
Frame f=new GraphicsG22();
f.setTitle("画像のフィルタ処理(ConvolveOp)");
f.setBackground(Color.white);
f.setSize(new Dimension(640,400));
f.show();
} */
/* class WinAdapter extends WindowAdapter {
public void windowClosing(WindowEvent we){ System.exit(0);}
} */
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
Graphics2D g2=(Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2.setColor(Color.black);
float[] data={ 0.1f, (float)k2/100.0f, 0.1f, (float)k1/100.0f, (float)k/100.0f, (float)k1/100.0f, 0.1f, (float)k2/100.0f, 0.1f};
int biw=bi.getWidth();
int bih=bi.getHeight();
BufferedImage bim=new BufferedImage(biw,bih,BufferedImage.TYPE_INT_RGB);
Kernel k=new Kernel(3,3,data);
ConvolveOp co=new ConvolveOp(k, ConvolveOp.EDGE_NO_OP, null);
co.filter(bi,bim);
g2.drawImage(bim,0,getInsets().top,getSize().width,getSize().height,this);
}
public void adjustmentValueChanged(AdjustmentEvent ae) {
if(ae.getAdjustable()==sb) k=ae.getValue();
else if(ae.getAdjustable()==sb1) k1=ae.getValue();
else if(ae.getAdjustable()==sb2) k2=ae.getValue();
repaint();
}
}