⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filterdemo.java

📁 这是一个用JAVA开发的Applet程序
💻 JAVA
字号:
import java.awt.*;import java.awt.event.*;import java.awt.image.*;import java.awt.geom.AffineTransform;import java.awt.font.TextLayout;import javax.swing.*;import java.net.URL;public class FilterDemo extends JApplet {  static boolean isStandAlone = false;  private BufferedImage bi[];  //定义尖锐化滤镜的数值  public static final float[] SHARPEN3x3_3 = {0.f, -1.f,  0.f,                                              -1.f,  5.f, -1.f,                                              0.f, -1.f,  0.f};  //Applet初始化方法  public void init() {    setBackground(Color.white);    bi = new BufferedImage[4];    String s[] = { "image1.jpg", "image2.jpg", "image1.jpg", "image2.jpg"};    for ( int i = 0; i < bi.length; i++ ) {      Image img = null;      if(!isStandAlone){//Applet取得图像的方法        img = getImage(getURL(s[i]));      }else{            //Application取得图像的方法        ImageIcon tempIcon = new ImageIcon(s[i]);        img = tempIcon.getImage();      }      //使每一张图片正确经过滤镜处理      try {        MediaTracker tracker = new MediaTracker(this);        tracker.addImage(img, 0);        tracker.waitForID(0);      }      catch ( Exception e ) {      }      int iw = img.getWidth(this);      int ih = img.getHeight(this);      bi[i] = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB);      Graphics2D big = bi[i].createGraphics();      big.drawImage(img,0,0,this);    }  }  public void paint(Graphics g) {    //取得Graphics2D类,并且进行滤镜初始化设置    Graphics2D g2 = (Graphics2D) g;    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,                        RenderingHints.VALUE_ANTIALIAS_ON);    g2.setRenderingHint(RenderingHints.KEY_RENDERING,                        RenderingHints.VALUE_RENDER_QUALITY);    int w = getSize().width;    int h = getSize().height;    g2.setColor(Color.black);    float[][] data = {{0.1f, 0.1f, 0.1f, 0.1f, 0.2f, 0.1f, 0.1f, 0.1f, 0.1f},                    SHARPEN3x3_3};    String theDesc[] = { "无特效", "尖锐特效", "黄照片特效", "漂白"};    //进入图片处理特效循环    for ( int i = 0; i < bi.length; i++ ) {      int iw = bi[i].getWidth(this);      int ih = bi[i].getHeight(this);      int x = 0, y = 0;       //改变图片大小的类      AffineTransform at = new AffineTransform();      at.scale((w-14)/2.0/iw, (h-34)/2.0/ih);      //使用BufferedImageOp类与BufferedImage类进行特效处理      BufferedImageOp biop = null;      BufferedImage bimg = new BufferedImage(iw,ih,BufferedImage.                                             TYPE_INT_RGB);      switch (i) {        case 0 :        case 1 :          x = i==0?5:w/2+3; y = 15;          Kernel kernel = new Kernel(3,3,data[i]);          //尖锐特效类          ConvolveOp cop = new ConvolveOp(kernel,                                          ConvolveOp.EDGE_NO_OP,                                          null);          cop.filter(bi[i],bimg);          biop = new AffineTransformOp(at,                            AffineTransformOp.TYPE_NEAREST_NEIGHBOR);          break;        case 2 :          x = 5; y = h/2+15;          byte chlut[] = new byte[256];          for ( int j=0;j<200 ;j++ )              chlut[j]=(byte)(256-j);          //变色特效类          ByteLookupTable blut=new ByteLookupTable(0,chlut);          LookupOp lop = new LookupOp(blut, null);          lop.filter(bi[i],bimg);          biop = new AffineTransformOp(at,                                       AffineTransformOp.TYPE_BILINEAR);          break;        case 3 :          x = w/2+3; y = h/2+15;          //漂白特效类          RescaleOp rop = new RescaleOp(1.5f,10.0f, null);          rop.filter(bi[i],bimg);          biop = new AffineTransformOp(at,                                       AffineTransformOp.TYPE_BILINEAR);      }      //显示图片      g2.drawImage(bimg,biop,x,y);      TextLayout tl = new TextLayout(theDesc[i], g2.getFont(),                                     g2.getFontRenderContext());      tl.draw(g2, (float) x, (float) y-4);    }  }  //取得图片文件完全地址的方法  protected URL getURL(String filename) {    URL codeBase = null;    URL url = null;    try{      codeBase = this.getCodeBase();      url = new URL(codeBase, filename);      return url;    }catch(Exception e){      System.out.println("找不到提供的文件");      return null;    }  }  //Applet独立运行的程序  public static void main(String s[]) {    isStandAlone = true;    JFrame f = new JFrame("图片特效");    //窗口关闭时清空内存    f.addWindowListener(new WindowAdapter() {      public void windowClosing(WindowEvent e) {System.exit(0);}    });    JApplet applet = new FilterDemo();    f.getContentPane().add("Center", applet);    applet.init();    f.pack();    f.setSize(new Dimension(550,550));    f.show();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -