// apply filter using default AWT toolkit
Image img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(image.getSource(), filter));
// use a pixel grabber to retrieve the image's color model;
// grabbing a single pixel is usually sufficient
PixelGrabber pg = new PixelGrabber(img, 0, 0, 1, 1, false);
try {
pg.grabPixels();
} catch (InterruptedException e) {
// ignore
}
// recast the AWT image into a BufferedImage (using alpha RGB)
BufferedImage result = new BufferedImage(img.getWidth(null), img.getHeight(null), pg.getColorModel().hasAlpha()
? BufferedImage.TYPE_INT_ARGB
: BufferedImage.TYPE_INT_RGB);
// draw the generated image to the result canvas and return
Graphics2D g = result.createGraphics();