import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.FilteredImageSource;
import java.awt.image.RGBImageFilter;
public class GrayFilter extends RGBImageFilter {
public GrayFilter() {
//initialisation de la variable canFilterIndexColorModel herite de RGBImageFilter
//ainsi la transformation des couleurs ne depend pas des coordonnees des points de l'image
canFilterIndexColorModel = true;
}
public static Image setFilter(Image source) {
return Toolkit.getDefaultToolkit().createImage(
new FilteredImageSource(source.getSource(),
new GrayFilter()));
}
public int filterRGB(int x, int y, int rgb) {
int alpha = (rgb & 0xFF000000);
int r = (rgb & 0xff0000) >> 16;
int g = (rgb & 0xff00) >> 8;
int b = (rgb & 0xff);
int moy = ((r + g + b) / 3);
return alpha + (moy << 16) + (moy << 8) + (moy);
}
public static void main(String [] args){
Image gray = GrayFilter.setFilter(
Toolkit.getDefaultToolkit().createImage("image.png"));
}
}