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

Render SVG to PNG on the server with pure JavaScript

本文关键字:SVG PNG JavaScript 服务器      更新时间:2023-09-26

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

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

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可用。问一下nodester的家伙,他们很可能有一个可用的图形库。

不幸的是,JavaScript中可用的所有高级呈现都是通过HTML5画布的浏览器实现的。NodeJS缺乏这些特性。

NodeJS有一些扩展可以让你做图像处理,但是你只能在你的主机安装了它们的情况下使用它们。

  • http://ajaxorg.posterous.com/canvas-api-for-nodejs
  • https://github.com/rsms/node-imagemagick(只是需要imagemagick已安装)

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

https://github.com/domenic/svg2png

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