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();
  }
}