JAVA:SVG转JPG转换器

3
是否有任何库可以将SVG转换为JPG?除了BATIK之外还有其他的选择吗?
我使用过BATIK,但是我发现出现了一些问题,例如这个异常:
java.lang.NullPointerException at org.apache.batik.css.engine.CSSEngine.getCascadedStyleMap(CSSEngine.java:684) at org.apache.batik.css.engine.CSSEngine.getComputedStyle(CSSEngine.java:755) at org.apache.batik.bridge.CSSUtilities.getComputedStyle(CSSUtilities.java:96) at org.apache.batik.bridge.CSSUtilities.convertDisplay(CSSUtilities.java:509) at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:176) at org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:148) at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:76) at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:165) at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:86) at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:132)
这是我的代码:
          JPEGTranscoder transcoder = new JPEGTranscoder();

      transcoder.addTranscodingHint(JPEGTranscoder.KEY_XML_PARSER_CLASSNAME,
          "org.apache.crimson.parser.XMLReaderImpl");
      transcoder.addTranscodingHint(JPEGTranscoder.KEY_QUALITY,
          new Float(1.0));

      TranscoderInput input = new TranscoderInput(new FileInputStream("C:/Taha/SmartPlannerNew/rectangles.svg"));
      OutputStream ostream = new FileOutputStream("C:/Taha/SmartPlannerNew/out.jpg");
      TranscoderOutput output = new TranscoderOutput(ostream);

      try {
        transcoder.transcode(input, output);
    } catch (TranscoderException e) { 
        System.out.println("error***************************************************************************************************************************");
        e.printStackTrace();
    }
      System.out.println("done.");
      ostream.close();
      System.exit(0);

can any one help me please ?


你应该关注Batik - 参考这个问题 - Is there some Java library for converting .svg to .png or .jpg at code? 。很可能,你可以使Batik工作。 - Caffeinated
2个回答

5

Batik正是您所需要的,非常稳定,没有什么比它更好了。

您可以阅读方便的官方教程,了解如何使用Batik的转码器部分: http://xmlgraphics.apache.org/batik/using/transcoder.html

如果您仍然遇到问题,请尝试发布导致错误的代码和完整的堆栈跟踪。 这里的某个人将能够帮助您。


有时候JAR文件可能会很混乱。将来你可以考虑使用像Apache Maven这样的托管构建系统或像Apache Ivy这样的依赖管理器。 - le3th4x0rbot

2

我的错误在于我使用了不同版本的jar文件。我删除了所有的jar文件并从相同的地方下载了一个新的jar文件集。


在将输入转码为输出时,我也遇到了“NullPointerException”错误。通过调试API,我发现仅使用“batik-transcoder” jar是不够的,我需要添加“batik-codec” jar来解决问题。 - ankitkpd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接