トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

Java 画像を綺麗に拡大縮小する

http://memojava.blogspot.com/2008/03/image.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
BufferedImage changSize(BufferedImage image, int width, int height) {
    BufferedImage shrinkImage = new BufferedImage(width,height, image.getType());
    Graphics2D g2d = shrinkImage.createGraphics();
    g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,
    RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
    RenderingHints.VALUE_ANTIALIAS_ON);
    g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,
    RenderingHints.VALUE_COLOR_RENDER_QUALITY);
    g2d.setRenderingHint(RenderingHints.KEY_DITHERING,
    RenderingHints.VALUE_DITHER_ENABLE);
    g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
    RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    g2d.setRenderingHint(RenderingHints.KEY_RENDERING,
    RenderingHints.VALUE_RENDER_QUALITY);
    g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
    RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
    RenderingHints.VALUE_FRACTIONALMETRICS_ON);
    g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,
    RenderingHints.VALUE_STROKE_NORMALIZE);
    g2d.drawImage(image, 0, 0, width, height, null);
    return shrinkImage;
}

全てのヒントを入れる必要はない。
画像に関しては

RenderingHints.KEY_INTERPOLATION

を設定すれば、だいたいOK。
個人的には

RenderingHints.VALUE_INTERPOLATION_BILINEAR

よりも

RenderingHints.VALUE_INTERPOLATION_BICUBIC

のほうが好き。

[カテゴリ: プログラミング言語 > Java]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2012年03月09日 23時40分42秒