我有一个SVG
文件,我对其进行了更改,使其具有渐变。
然后,我将SVG
转换为png
,但是新的png
中没有渐变。
我尝试使用Internet转换器将SVG
转换为png
,但是它仍然没有通过渐变。
当我用Illustrator打开svg
文件时,看不到渐变。显示SVG
文件的预览后,我可以看到渐变。
我得到这个error: org.apache.batik.bridge.BridgeException The attribute d of the element <path> is invalid.
我的问题是:
如果有人遇到类似错误或对如何解决此问题有任何想法,可以给我一些建议吗?
这是我的转换器:
public void svgToPng() throws MalformedURLException {
String svg= "/Users/userName/svg/";
File folder = new File(svg);
for (File fileEntry : folder.listFiles()) {
String[] codigoAux = fileEntry.getName().split("\\.");
if (codigoAux[0].isEmpty()) {
LOGGER.debug("Name of file is empty");
} else {
try {
PNGTranscoder transcoder = new PNGTranscoder();
String svgURI = fileEntry.toURI().toURL().toString();
TranscoderInput input = new TranscoderInput(svgURI);
String outputPath = "/Users/userName/png/";
OutputStream ostream = new FileOutputStream(outputPath + codigoAux[0] + ".png");
TranscoderOutput output = new TranscoderOutput(ostream);
transcoder.transcode(input, output);
ostream.flush();
ostream.close();
}catch (TranscoderException ex) {
LOGGER.error(ex);
} catch (IOException ex) {
LOGGER.error(ex);
}
}
}
}
这是我的svg中的元素路径:
<path fill="#D1E9FD" d="M7095.36-13.684c800.463,818.206,1299.013,1969.505,1299.013,3244.739 c0,633.732-123.293,1236.744-345.429,1783.602H305.852C83.733,4467.799-39.558,3864.79-39.558,3231.055 c0-1275.234,498.537-2426.534,1299.021-3244.739H7095.36z"></path>
这是我在SVG中的渐变:
<linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:1"></stop>
<stop offset="100%" style="stop-color:#FFE69C;stop-opacity:1"></stop>
</linearGradient>
这是我对渐变的引用:
<style> #Countries path, #Countries polygon {
fill: url(#grad1); filter: url(#dropshadow); }
</style>
我希望输出的图像是具有SVG文件预览中渐变的PNG图像。