如何动态将 SVG 转换为 PNG
我尝试将svg转换为PNG。svg 文档以 .Inputstream
首先,我将 svg 流转换为字节数组:
byte[] streamBytes = IOUtils.toByteArray(svgStream);
然后,我使用以下代码将字节转换为(PNG)。OutputStream
private ByteArrayOutputStream svgToPng(byte[] streamBytes)
throws TranscoderException, IOException {
PNGTranscoder t = new PNGTranscoder();
TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(streamBytes));
ByteArrayOutputStream ostream = new ByteArrayOutputStream();
TranscoderOutput output = new TranscoderOutput(ostream);
t.transcode(input, output);
ostream.flush();
// ostream.close();
return ostream;
}
但是我得到空指针异常通过”t.transcode(input, output);
"
org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
Premature end of file.
graphdata : null
at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:136)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
注意:如果我将svgstream保存在第一个磁盘上,并使用以下带有uri构造函数的转码器,那么它就可以工作了。但在我的情况下,我不想保存在磁盘上。
TranscoderInput input = new TranscoderInput(new File("c:/a.svg").toURI().toString());