私のプロジェクトの1つでは、JUNG2を使用して、アプレットに表示される非常に大きな複数の親の階層グラフを視覚化します。スクリーンショットを印刷すると(特にグラフがズームアウトされている場合)恐ろしいように見えるため、グラフの全体/一部を高解像度の静止画像にエクスポートする必要があります。
私が現在使用しているコードは次のとおりです。
public void writeToDisk(File saveToFolder, String filename) {
//Dimension loDims = getGraphLayout().getSize();
Dimension vsDims = getSize();
int width = vsDims.width;
int height = vsDims.height;
Color bg = getBackground();
BufferedImage im = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
Graphics2D graphics = im.createGraphics();
graphics.setColor(bg);
graphics.fillRect(0,0, width, height);
paintComponent(graphics);
try{
ImageIO.write(im,"png",new File(saveToFolder,filename));
}catch(Exception e){
e.printStackTrace();
}
}
これにより、特に高解像度ではないPNG画像が作成されます。だから私の質問は次のとおりです:
- PNGのエクスポート解像度を300dpiに上げることは可能ですか?
- グラフ、またはそのことに関するスイングコンポーネントを、あまり面倒なことなくEPS、PDF、SVGなどのベクターベースの形式にエクスポートすることは可能ですか?Javaでベクターベースの画像を管理するためのライブラリ( VectorGraphics2D、FreeHEP )をいくつか見つけましたが、それらを使用すると、グラフの各頂点とエッジを「再描画」する必要があるかどうかはわかりません。それは明らかにあまり望ましくありません...
- 私が見逃したかもしれない他の選択肢はありますか?
前もって感謝します、