2016-09-28 7 views
-1

私は現在SVGGraphics2Dを使用してSVGファイルを作成しています。私はそれに図形を描くことによってSVGファイルを出力することができましたが、必要なものはSVG文書に描かれたPNGファイルであるバッファ付き画像を持つことです。以下は、現在作業中のコードです。Java - SVGGraphics2Dを使用してPNGファイルからSVGファイルを生成

質問:SVGドキュメントにバッファリングされたイメージを描画する適切なプロセスは何でしょうか?

ソースから画像を描画する方法。

public void paintImage(Graphics g) throws IOException { 
    File imageSrc = new File("C:\\Users\\anthony\\Downloads\\SVGGraphics2D\\src\\svggraphics\\eg.png"); 
    BufferedImage img = ImageIO.read(imageSrc); 

    Graphics2D g2d = (Graphics2D) img.getGraphics(); 
    g2d.drawImage(img,0,0,null); 
} 

SVGドキュメントを作成します。

public static void main(String [] args) throws IOException { 
    DOMImplementation domImpl = GenericDOMImplementation.getDOMImplementation(); 

    String svgNS = "http://www.w3.org/2000/svg"; 
    Document document = domImpl.createDocument(svgNS, "svg", null); 

    SVGGraphics2D graphics = new SVGGraphics2D(document); 

    TestSVGGenerator test = new TestSVGGenerator(); 
    test.paintImage(graphics); 

    boolean useCSS = true; 
    Writer out = new OutputStreamWriter(new FileOutputStream("test.svg"), "UTF-8"); 
    graphics.stream(out, useCSS); 
} 
+0

質問はありません。 Btw。 SVGは2Dベクトル形式ですが、2Dビットマップを格納する機能はありますが、これは画像を格納する有効な方法ではありません。 – Spektre

+0

ありがとうございます。しかし、PNG画像をSVGに直接変換することは可能ですか?私は既にPNGイメージをBase64からSVGに変換しようとしたので、まだ動作しません。 – ACM

+0

SVGがネイティブでPNGチャンクをサポートしているとは思いません。 PNGを非圧縮画像に変換して保存する必要があります。あなたが使用しているライブラリがこのようなことをサポートしているかどうか分かりませんが、チャンクをprogramaticalyでSVGに追加することはできますか?SVGドキュメントを参照してください。 – Spektre

答えて

1

まず、SVGGraphics2Dクラスを提供しているライブラリを指定しません。それはあなたが省略した重要な情報です。したがって、以下は推測のビットです。

第2に、SVGGraphics2DのインスタンスをpaintImage()に渡しますが、使用しないでください。私はあなたが書いたべきであると思うものは:

public void paintImage(Graphics g) throws IOException { 
    File imageSrc = new File("C:\\Users\\anthony\\Downloads\\SVGGraphics2D\\src\\svggraphics\\eg.png"); 
    BufferedImage img = ImageIO.read(imageSrc); 

    g.drawImage(img,0,0,null); 
} 

それを試してみてください。

+0

ありがとうございます!私はSVGドキュメントの中にイメージを描くことができました。 – ACM

関連する問題