svg を PNG に変換しようとしています。svg ドキュメントはサーバーからInputstream
.
まず、svg ストリームを次のようにバイト配列に変換します。
byte[] streamBytes = IOUtils.toByteArray(svgStream);
OutputStream
次に、次のコードでバイトを (PNG) に変換します。
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());