縮小画像作成高速化メモ

今までは縮小画像を得るのに、

Image.getScaledInstance(x, y,Image.SCALE_SMOOTH);

だが、これは非常に遅い。
http://yusuke.homeip.net/diary/2006/02/09/1139476974993.html にある、

((Graphics2D) gM).setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
((Graphics2D) gM).setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
((Graphics2D) gM).setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,RenderingHints.VALUE_COLOR_RENDER_QUALITY);
((Graphics2D) gM).setRenderingHint(RenderingHints.KEY_DITHERING,RenderingHints.VALUE_DITHER_ENABLE);
((Graphics2D) gM).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
((Graphics2D) gM).setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
((Graphics2D) gM).setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
((Graphics2D) gM).setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,RenderingHints.VALUE_FRACTIONALMETRICS_ON);
((Graphics2D) gM).setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,RenderingHints.VALUE_STROKE_NORMALIZE);

// ここでread成功を待つ必要がある。でないとdrawが真っ黒。

gM.drawImage( readImage, 0, 0, x, y, obM);

だと速い。5倍位違うのは驚くばかり。
640*480→320*240には新方式でOK。
640*480→160*120には新方式はNG(小汚い)。
ミックスして使うのが良い。