如何在Ruby中将SVG字符串转换为文件或PNG?

时间:2015-06-02 17:30:09

标签: ruby-on-rails ruby svg imagemagick png

我从浏览器(Javascript)向运行Rails(Ruby)的服务器发送SVG字符串。我想将此字符串转换为具有透明度的PNG,或者至少是SVG文件,以便稍后将其转换

有什么想法吗?我安装了RMagick,但我还是不确定如何从字符串创建文件。

实现此目的的任何其他解决方案?

我们的想法是创建简单的标识"动态

2 个答案:

答案 0 :(得分:9)

使用RMagick,只需使用Image.from_blob + defining the SVG format

将字符串读入图像实例
require "RMagick"

svg_string='
<svg xmlns="http://www.w3.org/2000/svg"  width="120" height="120" viewPort="0 0 120 120" version="1.1">
  <rect width="150" height="150" fill="rgb(0, 255, 0)" stroke-width="1" stroke="rgb(0, 0, 0)" />
  <line x1="20" y1="100" x2="100" y2="20" stroke="black" stroke-width="2"/>
</svg>'

img = Magick::Image.from_blob(svg_string) {
  self.format = 'SVG'
  self.background_color = 'transparent'
}
img.write "example_out.png"

How to convert SVG string to file or PNG in Ruby

修改

如果字符串只是一个SVG路径,则需要Magick::Draw.path来“重建”矢量图形。 Doc&amp;例子here

答案 1 :(得分:-1)

我们使用c3 / d3生成的一些SVG图表完成了这项工作。我们最终使用Capybara访问一个呈现SVG的网页,然后保存页面的快照。