首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将SVG动态转换为PNG

如何将SVG动态转换为PNG
EN

Stack Overflow用户
提问于 2011-11-17 21:36:46
回答 1查看 16.8K关注 0票数 14

我尝试将svg转换为PNG。svg文档以Inputstream的形式来自服务器。

首先,我使用以下命令将svg流转换为字节数组:

代码语言:javascript
复制
 byte[] streamBytes = IOUtils.toByteArray(svgStream);

然后,我使用以下代码将字节转换为OutputStream(PNG)。

代码语言:javascript
复制
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);“的空指针异常

代码语言:javascript
复制
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构造函数,那么它就可以工作了。但在我的例子中,我不想保存在磁盘上。

代码语言:javascript
复制
TranscoderInput input = new TranscoderInput(new File("c:/a.svg").toURI().toString());
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-18 18:31:47

我找到问题了。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8167977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档