Java-Générer un fichier SVG à partir d'un fichier PNG à l'aide de SVGGraphics2D


J'utilise actuellement SVGGraphics2D pour créer un fichier SVG. J'ai pu avoir un fichier SVG en sortie en y dessinant des formes, mais ce dont j'ai besoin, c'est d'avoir un bufferedimage - un fichier PNG, dessiné dans le document SVG. Voici les codes actuels avec lesquels je travaille.

Question: Quel devrait être le processus approprié pour dessiner une image tampon dans un document SVG?

Méthode pour dessiner l'image à partir de la source.

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);
}

Crée un document 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);
}
Author: ACM, 2016-09-28

1 answers

Tout d'abord, vous ne spécifiez pas quelle bibliothèque fournit la classe SVGGraphics2D. C'est une information importante que vous avez omise. Donc, ce qui suit est un peu une supposition.

Ensuite, vous passez une instance de SVGGraphics2D à paintImage(), mais ne l'utilisez pas. Je soupçonne que ce que vous auriez dû écrire est:

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);
}

Essayez ça.

 0
Author: Paul LeBeau, 2016-09-28 11:39:57