Mega Code Archive

 
Categories / Java / 2D Graphics GUI
 

Noise Image

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 StaticGenerator 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();   }   public void run() {     while (true) {       random.nextBytes(data);       repaint();       try {         Thread.sleep(1000 / 24);       } catch (InterruptedException e) { /* die */       }     }   }   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 StaticGenerator());     f.setSize(300, 300);     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     f.setVisible(true);   } }