Могу ли я использовать SVG Salamander для растеризации SVG в файлы PNG? - PullRequest
7 голосов
/ 19 января 2012

Я видел это потому, что SVG-Salamander достаточно мал для моих проектов. Но я не знаю, смогу ли я использовать это для этого, ни как это сделать.

Я использую этот код:

public static void main(String[] args) throws IOException, SVGException {
    // TODO Auto-generated method stub

    File f = new File("./src/game_scheme.svg");
    SVGUniverse svgUniverse = new SVGUniverse();
    SVGDiagram diagram = svgUniverse.getDiagram(svgUniverse.loadSVG(f.toURL()));
    BufferedImage bi = new BufferedImage(320, 240, BufferedImage.TYPE_INT_ARGB);
    Graphics2D ig2 = bi.createGraphics();
    diagram.render(ig2);
    ImageIO.write(bi, "PNG", new File("./yourImageName.png"));

}

Но изображения не гладкие :(, есть идеи?

Ответы [ 2 ]

3 голосов
/ 23 января 2012

Если вы видите неровные края, вы можете исправить это, добавив подсказку рендеринга графики.

Кроме того, рекомендуется завершить вызов dispose (), когда вы закончите с графическим контекстом.

Graphics2D ig2 = bi.createGraphics();
ig2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
diagram.render(ig2);
ig2.dispose();

ImageIO.write(bi, "PNG", new File("./yourImageName.png"));
3 голосов
/ 22 января 2012

Да, это возможно.Все, что вам нужно сделать, это загрузить документ SVG с помощью SVG Salamander, создать BufferedImage, в который вы хотите записать, создать контекст Graphics2D из вашего BufferedImage, а затем вызвать метод render () в SVGDiagram для рисования на вашем изображении.

Вы можете упростить процесс, используя SVGIcon.Он будет обрабатывать все внутреннее устройство Salamander для вас, и вы можете рассматривать ваш SVG-документ как обычный значок Swing.

Если вы планируете конвертировать множество файлов SVG в изображения в командной строке, есть такжеЗадача Ant, которая позволит вам конвертировать SVG в изображения из скрипта ant.

Документы по использованию SVG Salamander: http://svgsalamander.java.net/docs/use.html

Простая демонстрация с использованием SVG Salamander с Swing: http://svgsalamander.java.net/docs/exampleCode/SVGIODemo.html

...