我正在使用SVGGraphics2D创建一个SVG文件。通过在其上绘制形状,我可以将SVG文件作为输出,但是我需要的是在bugsferedmage中创建一个PNG文件,该文件在SVG文档中绘制。以下是我正在使用的当前代码。Java - 使用SVGGraphics2D从PNG文件生成SVG文件
问题:什么应该是在SVG文档中绘制bufferedimage的正确过程?
从源头上绘制图像的方法。
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位图的功能,但这不是存储图像的有效方式。 – Spektre
谢谢。但是,是否可以直接将PNG图像转换为SVG?因为我已经尝试将PNG图像转换为它的Base64到SVG,但它仍然不起作用。 – ACM
我不认为SVG本地支持PNG块。您很可能必须将您的PNG转换为未压缩的图像并将其存储。不知道你使用的库是否支持这种功能,但是你仍然可以将程序块添加到SVG中,这只是XML,请参阅SVG文档以了解如何... – Spektre