gpt4 book ai didi

java - Batik 在 SVGGraphics2D 中加载 SVG 文件

转载 作者:行者123 更新时间:2023-12-05 07:32:10 24 4
gpt4 key购买 nike

我使用 batik 绘制 svg,并保存它。那个工作。

但现在我尝试加载我的 svg 文件并添加一些东西。

我使用这个函数加载我的 svg 文件

private static SVGDocument loadSVGDocument(String uri) {
String parser = XMLResourceDescriptor.getXMLParserClassName();
SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(parser);
SVGDocument svgDocument = null;
try {
//svgDocument = factory.createSVGDocument(IMAGE_SVG);
svgDocument = factory.createSVGDocument(uri);
} catch (IOException e) {
System.out.println(e.getMessage());
}
return svgDocument;
}

这有 SVGGraphics2D

SVGDocument svgDocument = loadSVGDocument(TEST_SVG);
SVGGraphics2D g = new SVGGraphics2D(svgDocument);

当我调试我的 SVGDocument 时,所有子项和属性都为 null当我生成图像时,它是空的,大小是 400x400

加载 SVG 文件时哪里有问题?

最佳答案

我每个人我为我的案例找到了解决方案

我比较我这一代和我的文件。首先认为我只有 svg root 和一个 child g。svg root 没有 with 和 height

我去搜索宽度和高度

        Element elSVG = svgDocument.getRootElement();
String width = elSVG.getAttribute("width");
String height = elSVG.getAttribute("height");

和root之后

NodeList nodes = elSVG.getElementsByTagName("g");
Node node = nodes.item(0);
Element el = null;
if(Node.ELEMENT_NODE == node.getNodeType()) {
el = (Element)node;
}

最后将所有内容添加到图形

        SVGGraphics2D g = new SVGGraphics2D(svgDocument);
g.setTopLevelGroup(el);
g.setSVGCanvasSize(new Dimension(Integer.parseInt(width), Integer.parseInt(height)));

而且这只适用于一个 child 的 svg。现在对我来说还可以。

然后我尝试添加另一个像矩形一样的想法,并且可以工作。

关于java - Batik 在 SVGGraphics2D 中加载 SVG 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51455415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com