我正在使用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