Make noise Image

Thảo luận trong 'Java/Java Script' bắt đầu bởi integer, 24 Tháng chín 2011.

  1. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Code tạo 1 Frame dạng noise như hiệu ứng noise image trong Photoshop.
    [IMG]
    Mã:
     
    import java.awt.Graphics;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.image.BufferedImage;
    import java.awt.image.ColorModel;
    import java.awt.image.DataBuffer;
    import java.awt.image.DataBufferByte;
    import java.awt.image.IndexColorModel;
    import java.awt.image.Raster;
    import java.awt.image.WritableRaster;
    import java.util.Random;
    
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    
    public class Test extends JComponent implements Runnable {
      byte[] data;
    
      BufferedImage image;
    
      Random random;
    
      public void initialize() {
        int w = getSize().width, h = getSize().height;
        int length = ((w + 7) * h) / 8;
        data = new byte[length];
        DataBuffer db = new DataBufferByte(data, length);
        WritableRaster wr = Raster.createPackedRaster(db, w, h, 1, null);
        ColorModel cm = new IndexColorModel(1, 2, new byte[] { (byte) 0, (byte) 255 }, new byte[] {
            (byte) 0, (byte) 255 }, new byte[] { (byte) 0, (byte) 255 });
        image = new BufferedImage(cm, wr, false, null);
        random = new Random();
        new Thread(this).start();
      }
    
        @Override
      public void run() {
        while (true) {
          random.nextBytes(data);
          repaint();
          try {
            Thread.sleep(1000 / 24);
          } catch (InterruptedException e) { /* die */
          }
        }
      }
    
        @Override
      public void paint(Graphics g) {
        if (image == null)
          initialize();
        g.drawImage(image, 0, 0, this);
      }
    
      public static void main(String[] args) {
        JFrame f = new JFrame();
        f.add(new Test());
        f.setSize(300, 300);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
      }
    }
    @Overrider do IDE netbean thêm vào, bạn có thể xóa đi nếu chạy trên IDE khác.
    
    [I]java2s.com[/I]
    
    lyvinhr00m thích bài này.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí