我有一段javascript代码,当一个人进入其中一页时,它会动态生成svg图像标签。我使用d3库来帮助生成图像。唯一的问题是d3不完全兼容IE,我想生成基于svg文件的.png、.jpg、.gif或其他任何图像文件。是否有已知的方法可以做到这一点?服务器端代码基于PHP,我们使用node.js和render.js来处理大量的动态内容。
我正在使用ImageMagick将SVG图像转换为PNG图像。这个工具的效果非常好。
以下是如何快速进行转换的示例:
exec('/usr/bin/convert /path/to/image.svg /path/to/output_image.png');
首先,您需要在服务器端使用DOM实现,因为您想获取在客户端呈现的SVG。为此,我们使用node.js中的jsdom。
使用这种方法,您可以在服务器端呈现D3,并在服务器上获取SVG,然后将其转换为任何您喜欢的格式。
以下是如何执行此操作的链接。
一旦您获得了SVG和PNG,就可以使用modernizer.js。
1)使用Modernizr检查浏览器的兼容性。
2)然后根据兼容性加载SVG或PNG。
示例(JS解决方案):
if (!Modernizr.svg) {
$("#logo").css("background-image", "url(fallback.png)");
}
.no-svg #logo { background-image: url(fallback.png); }