2012-01-19 25 views
7

それは問題です。SVG-Salamanderが私のプロジェクトに十分に小さいことがわかりました。しかし、私はそれをやる方法も、それを使うこともできないのか分かりません。SVG Salamanderを使ってSVGをPNGのファイルにラスタライズすることはできますか? (そしてどうすればいいですか?)

もし私ができないのであれば、Javaで他の小さなSVGからPNGへのラスタライザを知っていますか?

ありがとうございます。

私はこのコードを使用しました:

public static void main(String[] args) throws IOException, SVGException { 
    // TODO Auto-generated method stub 

    File f = new File("./src/game_scheme.svg"); 
    SVGUniverse svgUniverse = new SVGUniverse(); 
    SVGDiagram diagram = svgUniverse.getDiagram(svgUniverse.loadSVG(f.toURL())); 
    BufferedImage bi = new BufferedImage(320, 240, BufferedImage.TYPE_INT_ARGB); 
    Graphics2D ig2 = bi.createGraphics(); 
    diagram.render(ig2); 
    ImageIO.write(bi, "PNG", new File("./yourImageName.png")); 

} 

しかし画像は、任意のアイデアを:(滑らかされていません

+0

私は同様の問題に直面していますが、png画像は滑らかではありません。それを修正する方法はありますか? – ayachama

答えて

3

はい、それは可能であるあなたがする必要があるのは、使用してSVGドキュメントを読み込むのですか?。 SVG Salamanderを使用して、書き込みたいBufferedImageを作成し、BufferedImageからGraphics2Dコンテキストを作成し、SVGDiagramのrender()メソッドを呼び出してイメージに描画します。

SVGIconを使用すると、それはyのすべてのサラマンダーの内部を扱いますSVGドキュメントを通常のSwingアイコンとして扱うことができます。

多くのSVGファイルをコマンドライン上のイメージに変換する予定がある場合は、AntタスクからSVGをAntスクリプトのイメージに変換することもできます。

SVGサラマンダーの使用状況のドキュメント: http://svgsalamander.java.net/docs/use.html

スイングでSVGサラマンダーを使用して簡単なデモ: http://svgsalamander.java.net/docs/exampleCode/SVGIODemo.html

+0

私はAntの理由を使用することはできません。アンドロイドアプリがインストールされたときに、それらを.pngにレンダリングします。しかし、情報をありがとう、私は結果をあなたに教えてみるつもりです。 –

3

あなたはギザギザのエッジを見ている場合は、ヒントをレンダリンググラフィックスを追加することでこれを修正することができます。

また、グラフィックスコンテキストの終了時にdispose()を呼び出すことをお勧めします。

Graphics2D ig2 = bi.createGraphics(); 
ig2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
diagram.render(ig2); 
ig2.dispose(); 

ImageIO.write(bi, "PNG", new File("./yourImageName.png")); 
+0

今夜あなたのコードをテストします。サラマンダーは非常に偉大なlibです、それに感謝します。 –

+0

私はそれを試して、それはうまくレンダリングします。あなたはこれのチャンピオンです。 –

+0

私のSVGファイルには詳細がたくさんあります。それはぼやけて見え、PNGに変換されたときに読みにくい小さなテキストを持っています。 – ayachama

関連する問題