public static BufferedImage getScaledImage(Image img, int newWidth,
int newHeight, int scaleType) {
if (scaleType == IMAGE_SCALE_BICUBIC) {
BufferedImage scaled = createAcceleratedImage(newWidth, newHeight);
Graphics2D g2 = (Graphics2D) scaled.getGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2.drawImage(img, 0, 0, newWidth, newHeight, null);
return scaled;
} else {
ImageFilter filter;
filter = new ImprovedAveragingScaleFilter(img.getWidth(null),
img.getHeight(null), newWidth, newHeight);
ImageProducer prod;
prod = new FilteredImageSource(img.getSource(), filter);
Image result = Toolkit.getDefaultToolkit().createImage(prod);
waitUntilLoaded(result);
return ImageUtil.createAcceleratedImage(result);
}
}