使用Apache Batik从SVG生成JPG

时间:2016-07-07 06:03:28

标签: java apache svg batik image-transcoding

我试图将 .svg 文件转换为 .jpg .png 文件。现在我尝试使用 Apache Batik Transcoder Link)。

这是我的代码:(来自here的官方代码)

// Create a JPEG transcoder
JPEGTranscoder t = new JPEGTranscoder();

// Set the transcoding hints.
t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY,
    new Float(.8));

// Create the transcoder input.
String svgURI = new File("C:/test.svg").toURL().toString();
TranscoderInput input = new TranscoderInput(svgURI);

// Create the transcoder output.
OutputStream ostream = new FileOutputStream("C:/out.jpg");
TranscoderOutput output = new TranscoderOutput(ostream);

// Save the image.
t.transcode(input, output);

// Flush and close the stream.
ostream.flush();
ostream.close();
System.exit(0);

但它给出了我的错误:

  

线程中的异常" main" org.apache.batik.transcoder.TranscoderException:null

     

附上例外:

     

     

at org.apache.batik.transcoder.image.ImageTranscoder.transcode(Unknown Source)

     

at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown Source)

     

at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)

     

在SaveAsJPEG.main(SaveAsJPEG.java:27)

我不知道该怎么做,因为这是他们网站上的代码(!)。因此,如果您知道如何解决它或者想知道如何将我的.svg图片转换为.jpg和.png,请告诉我。

2 个答案:

答案 0 :(得分:1)

好吧,我现在找到了解决问题的方法。好像 Batik 1.8 (我已经使用过)无法正常工作(或者至少不能像他们在API页面上说的那样工作。

我现在使用的是 Batik 1.7 。所以现在一切都很好,每个人都想使用Batik:我建议你使用1.7,因为文档不是1.8。

答案 1 :(得分:0)

如果将batik-codec而不是maven添加到transcoder,则可以解决此问题。