2016-09-28 11 views
-1

В настоящее время я использую SVGGraphics2D для создания файла SVG. Я смог получить SVG-файл в качестве вывода, рисуя фигуры на нем, но тогда мне нужно иметь файл bufferedimage - файл PNG, нарисованный в документе SVG. Ниже приведены текущие коды, с которыми я работаю.Java - сгенерируйте SVG-файл из PNG-файла с помощью SVGGraphics2D

Вопрос: Каким должен быть надлежащий процесс рисования буферизованного изображения в документе 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); 
} 
+0

У меня нет вопросов. Btw. SVG является двумерным векторным форматом, но имеет возможность хранить 2D растровые изображения, но это не эффективный способ хранения изображений. – Spektre

+0

Спасибо. Но возможно ли прямо преобразовать PNG-изображение в SVG? Поскольку я уже пытался преобразовать изображения PNG в Base64 в SVG, но он все еще не работает. – ACM

+0

Я не думаю, что SVG поддерживает части PNG изначально. Скорее всего, вам нужно преобразовать PNG в несжатое изображение и сохранить это. Не знаю, поддерживает ли библиотека, но вы все же можете добавить программный пакет в SVG, а просто XML см. В документах SVG для ... – Spektre

ответ

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

Попробуйте это.

+0

Большое вам спасибо! Я смог нарисовать изображение внутри документа SVG. – ACM

 Смежные вопросы

  • Нет связанных вопросов^_^