使用纯JavaScript在服务器上将SVG渲染为PNG

时间:2011-10-28 17:52:51

标签: javascript node.js png

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

最近我听说javascript中有h.264个渲染器,所以png不是那么遥远吗?

3 个答案:

答案 0 :(得分:11)

PNG 渲染器并不遥不可及,实际上它已经存在:http://devongovett.github.com/png.js/

这里的问题是你需要一个“假画布”实现,它不会绘制任何东西,只需构建一个像素数组,然后可以保存到PNG。没有什么比这更好的了,因为除了这种情况之外它没什么用......

即:svg - >位图渲染器(假帆布) - > rgb数组 - > png文件

某些托管服务提供商将允许您声明系统级依赖项,或者有一些默认值可用。 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。询问在nodeter的人,他们很可能有一个图形库。

答案 1 :(得分:1)

不幸的是,JavaScript中提供的所有高级渲染都是通过HTML5画布的浏览器实现。 NodeJS缺乏这些功能。

NodeJS有扩展功能,允许您进行图像处理,但只有在主机安装时才能使用它们。

答案 2 :(得分:-3)

有svg2png,它使用无头浏览器将svgs渲染为png。

https://github.com/domenic/svg2png

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