public RenderedImage getSelectedImageData(final BufferedImage sourceImage, Selection crop, final int size)
{
if (crop == null)
{
crop = autoCalculateImageCropSelection(sourceImage.getWidth(), sourceImage.getHeight(), size);
}
CropImageFilter cropFilter = new CropImageFilter(crop.getTopLeftX(), crop.getTopLeftY(), crop.getWidth(), crop.getHeight());
AreaAveragingScaleFilter scaleFilter = new AreaAveragingScaleFilter(size, size);
FilteredImageSource croppedImageProducer = new FilteredImageSource(sourceImage.getSource(), cropFilter);
FilteredImageSource croppedAndResizedImageProducer = new FilteredImageSource(croppedImageProducer, scaleFilter);
ImageGenerator generator = new ImageGenerator();
croppedAndResizedImageProducer.startProduction(generator);
BufferedImage scaledImage = generator.getImage();
scaledImage.flush();
return scaledImage;
}