我正在研究这个程序,它做了一些手动解析和更改svg文件,我只使用Batik来创建有问题的SVG文件的预览。
它应该读取目录中的所有SVG文件,并显示我正在使用Batik的图像以及我在网上找到的这个转码器类,这是前一段时间对另一个程序的建议:
public class BufferedImageTranscoder extends ImageTranscoder {
private BufferedImage image = null;
@Override
public BufferedImage createImage(int weight, int height)
{
return new BufferedImage(weight, height, BufferedImage.TYPE_INT_ARGB);
}
@Override
public void writeImage(BufferedImage image, TranscoderOutput output) throws TranscoderException
{
this.image = image;
}
public BufferedImage getBufferedImage()
{
return image;
}
public static BufferedImage loadImage(File svgFile, float width, float height) {
BufferedImageTranscoder imageTranscoder = new BufferedImageTranscoder();
imageTranscoder.addTranscodingHint(PNGTranscoder.KEY_WIDTH, width);
imageTranscoder.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, height);
try {
String path = svgFile.getCanonicalPath();
System.out.println(path);
TranscoderInput input = new TranscoderInput(path);
if(input != null)
imageTranscoder.transcode(input, null);
} catch (TranscoderException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
return imageTranscoder.getBufferedImage();
}
}
在macOS上,这个程序似乎运行得很好,没有问题,但是当我在Windows中将项目加载到Eclipse时,我得到了这个例外:
附上例外:无法理解连接的URL org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:136) 在 org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
知道导致这种情况的原因以及如何解决这个问题吗?