提问者:小点点

使用Apache Batik从SVG生成JPG


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

这是我现在的代码:(这里的官方代码)

// 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

封闭例外:

在org. apache.batik.transcode.image.ImageTranscode.transcode(未知来源)

在org. apache.batik.transcode.XMLAbstractTranscode.transcode(未知来源)

在org. apache.batik.transcode.SVGAbstractTranscode.transcode(未知来源)

在SaveAsJPEG. main(SaveAsJPEG.java:27)

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


共2个答案

匿名用户

嗯,我现在找到了解决我问题的方法。蜡染1.8(我用过)似乎不能正常工作(或者至少不能像他们在API页面上说的那样工作。

我现在用蜡染1.7就可以了。所以现在一切都很好,对每个想使用蜡染的人来说:我建议你使用1.7,因为留档不是1.8。

匿名用户

如果您将batik-codec添加到maven而不是转码器,就可以解决这个问题。