【问题标题】:Java - Generate SVG file from a PNG file using SVGGraphics2DJava - 使用 SVGGraphics2D 从 PNG 文件生成 SVG 文件
【发布时间】:2017-02-05 22:17:53
【问题描述】:

我目前正在使用 SVGGraphics2D 创建一个 SVG 文件。我可以通过在其上绘制形状来将 SVG 文件作为输出,但是我需要的是在 SVG 文档中绘制的缓冲图像 - 一个 PNG 文件。以下是我正在使用的当前代码。

问题:在 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);
}

【问题讨论】:

  • 我没有看到任何问题。顺便提一句。 SVG 是 2D 矢量格式,但可以存储 2D 位图,但这不是存储图像的有效方式。
  • 谢谢。但是是否可以直接将 PNG 图像转换为 SVG?因为我已经尝试将 PNG 图像转换为它的 Base64 到 SVG,但它仍然不起作用。
  • 我不认为 SVG 本身支持 PNG 块。您很可能必须将您的 PNG 转换为未压缩的图像并存储它。不知道您使用的库是否支持这样的东西,但您仍然可以通过编程方式将块添加到 SVG 中,它只是 XML,请参阅 SVG 文档以了解如何...
  • 从快速搜索中我发现:Does SVG support embedding of bitmap images? 链接的 SVG 包含位图图像 ...

标签: java image-processing svg bufferedimage graphics2d


【解决方案1】:

首先,您没有指定提供SVGGraphics2D 类的库。这是您忽略的重要信息。所以以下是一点猜测。

其次,您将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);
}

试试看。

【讨论】:

  • 非常感谢!我能够在 SVG 文档中绘制图像。
猜你喜欢
  • 1970-01-01
  • 2013-05-26
  • 2017-05-25
  • 1970-01-01
  • 2019-12-17
  • 2011-07-11
  • 2011-06-02
  • 2021-08-09
  • 2015-07-08
相关资源
最近更新 更多