Mega Code Archive

 
Categories / Java / 2D Graphics GUI
 

A filter class which translates moderately white pixels to green

import java.applet.Applet; import java.awt.Button; import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.FilteredImageSource; import java.awt.image.ImageProducer; import java.awt.image.RGBImageFilter; public class FilterLab extends Applet implements ActionListener {   private Image originalImage, filteredImage;   private Button btn = new Button("FILTER");   private WhiteToGreenFilter cropFilter = new WhiteToGreenFilter();   public void init() {     originalImage = getImage(getDocumentBase(), "emily.gif");     MediaTracker tracker = new MediaTracker(this);     tracker.addImage(originalImage, 0);     try {       tracker.waitForAll();     } catch (Exception e) {     }     filteredImage = originalImage;     btn.addActionListener(this);     add(btn);   }   public void actionPerformed(ActionEvent ev) {     filter();     repaint();   }   private void filter() {     ImageProducer producer = originalImage.getSource();     producer = new FilteredImageSource(producer, cropFilter);     filteredImage = createImage(producer);   }   public void paint(Graphics g) {     g.drawImage(originalImage, 10, 50, this);     g.drawImage(filteredImage, 271, 50, this);   } } class WhiteToGreenFilter extends RGBImageFilter {   public WhiteToGreenFilter() {     canFilterIndexColorModel = true;   }   public void setFast(boolean fast) {     canFilterIndexColorModel = fast;   }   public int filterRGB(int x, int y, int rgb) {     int red = (rgb & 0x00ff0000) >> 16;     int green = (rgb & 0x0000ff00) >> 8;     int blue = (rgb & 0x000000ff);     if (blue >= 0xc0 && green >= 0xc0 && red >= 0xc0) {       return 0xff00ff00;     } else {       return rgb;     }   } }