通过Batik转码更新图像时出现的问题

时间:2012-09-26 13:46:19

标签: java filewriter batik transcode

我一直在为一个命令行程序编写一个GUI包装器(在Java中),该程序生成一个文件名下的SVG图像。

不幸的是,底层程序在生成新图像时无法关闭svg标记,所以我使用像这样的FileWriter来修改文件:

FileWriter fw = new FileWriter(("ImageCache/"+file), true); //true: allows appending to file        
BufferedWriter bw = new BufferedWriter(fw);
bw.write("\n</svg>");   
bw.close();
fw.close();

Batik完美地转码第一张图片,但第二张图片由于缺少svg标签而失败。

我已经手动检查以验证FileWriter是否正在更新文件,它就是这样。

下面是我的代码转换器代码(带有输入文件和newFileName):

org.apache.batik.ext.awt.image.spi.ImageTagRegistry.getRegistry().flushCache();
PNGTranscoder t = new PNGTranscoder();

String svgURI = new File(file).toURL().toString();
TranscoderInput i = new TranscoderInput(svgURI);
OutputStream outStream = new FileOutputStream(newFileName);
TranscoderOutput o = new TranscoderOutput(outStream);

t.transcode(i, o);
outStream.flush();
outStream.close();

每次生成更新的SVG图像时,都会实例化一个新的转码器对象并运行上述方法。

在代码转换器运行之前总是生成图像并添加结束标记,因此我不知道为什么代码转换器似乎没有读取更新的文件。我也尝试暂停线程几秒钟,没有任何改进。

任何建议都将不胜感激。

0 个答案:

没有答案