用纯JavaScript将服务器上的SVG呈现给PNG

标题说明了这一点。 我知道Imagemagick可以做到这一点,但让我们假设我在一个只允许使用JavaScript的云服务器( 咳嗽 节点 咳嗽 )。 事实上,这不是一件坏事。

最近听说javascript里面有h.264渲染器,所以png不是那么遥不可及?

一个PNG 渲染器是不是很远,实际上它已经存在: http : //devongovett.github.com/png.js/

这里的问题是,你将需要一个“假帆布”实现,不绘制任何东西,只是build立一个像素数组,然后可以保存到PNG。 没有这样的事情,因为这种情况除了这种情况外没用

即:svg – >位图渲染器(伪造canvas) – > rgb数组 – > png文件

某些托pipe提供程序将允许您声明系统级别的依赖项,或者有一些默认值可用。 gm会为此目的正常工作:

gm = require('gm') gm('image.svg').write('image.png', function(err){ if (!err) console.log('image converted.') }) 

你可以在http://no.de机器上安装imagemagick / graphicsmagick, dotcloud也可以使用IM。 问节点工的人,很有可能他们有一个graphics库可用。

不幸的是,JavaScript中的所有高级渲染都是通过HTML5canvas的浏览器实现的。 NodeJS缺less这些function。

有NodeJS的扩展,让你做image processing,但你只能使用这些如果你的主机安装它们。

有svg2png,它使用无头浏览器呈现sng到png。

https://github.com/domenic/svg2png

https://www.npmjs.com/package/svg2png