gpt4 book ai didi

java - 如何即时将 SVG 转换为 PNG

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:53 25 4
gpt4 key购买 nike

我尝试将 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());

最佳答案

我发现了问题。

我每次都检查 svgstream 是否正常。为了查看是否可以,我每次都创建一个 SVG 文件,其中包含我评论中的代码。从逻辑上讲,它消耗了流。最后没有真正的流。它导致了异常。感谢所有..

关于java - 如何即时将 SVG 转换为 PNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8167977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com