Webアプリ開発エンジニアのための技術情報サイト「テックスコア」

6. グラフを画像ファイルに出力する方法

2006.02.27 株式会社四次元データ 鈴木 圭

この章では、JUNG で描画したグラフを JPEG や PNG などの形式でファイルに保存する方法について解説します。それに加えて Renderer を自作する方法についても説明します。

グラフの画像をファイルに出力する方法は、GUI ベースのアプリケーションの機能として画像出力を行う場合と、GUI を持たないアプリケーションで画像出力を行う場合の2通りあります。また、GUI を持たないアプリケーションの場合、現状では Renderer を自作する必要があります。

6.1. GUI ベース・アプリケーションでの画像出力

GUI ベースのアプリケーションでグラフの画像をファイルに出力する方法は、java.awt.Component に描画されている内容をキャプチャする方法と同じです。GUI ベースということはグラフの表示に VisualizationViewer を使うことになると思います。VisualizationViewer は java.awt.Component を継承しているので、void paint(Graphics) メソッドを使って任意の Graphics オブジェクトに描画することができます。

以下に、VisualizationViewer に描画されているグラフを JPEG ファイルとして出力するメソッドを示します。

/**
 *
 *  VisualizationViewer に描画されている内容を JPEG ファイルとして保存する.
 *
 *  @param fileName 保存ファイル名.
 *  @param viewer   対象の VisualizationViewer.
 *
 */
private static void saveGraphToFile(String fileName,
                                    VisualizationViewer viewer) {
    int width = viewer.getWidth();
    int height = viewer.getHeight();
    BufferedImage image = new BufferedImage(width,
                                            height,
                                            BufferedImage.TYPE_INT_BGR);

    // グラフを描画.
    Graphics graphics = image.createGraphics();
    viewer.paint(graphics);
    graphics.dispose();

    // JPEG 形式で保存.
    try {
        ImageIO.write(image, "jpeg", new File(fileName));
    } catch (IOException exception) {
        exception.printStackTrace();
    }
}

全体の流れは、まず VisualizationViewer と同じサイズの BufferedImage を作成します。次に、BufferedImage から Graphics オブジェクトを取得し、VisualizationViewer の paint(Graphics) メソッドでグラフを描画します。最後に BufferedImage をファイルに出力しています。

このサンプルでは保存形式を JPEG として説明しましたが、ファイルの保存には Java Image I/O API(javax.imageio パッケージ)を使用しているので、Java Image I/O API で対応している形式(現状では JPEG, PNG, BMP, WBMP)から好きな形式で出力可能です。(Java Image I/O API についての詳しい情報は http://java.sun.com/j2se/1.4/ja/docs/ja/guide/imageio/index.html をご覧ください。)



前のページへ TECHSCOREのTOPページへ 次のページへ
TECHSCORE PR
PR
PR
PR
PR
PR

techscore(トップページへ)
TECHSCORE書店
TECHSCOREトップページJavaSQLXMLリッチクライアントモデリングセマンティックWebその他技術Tuigwaa