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

9
我正在从浏览器(Javascript)向运行Rails(Ruby)的服务器发送SVG字符串。我想将此字符串转换为带有透明度的PNG,或者至少转换为SVG文件以便稍后转换。有什么好的想法吗?我已经安装了RMagick,但仍然不确定如何从字符串创建文件。是否有其他解决方案可以实现此目标?我的想法是动态创建简单的“标志”。
2个回答

12
用 RMagick,只需使用 Image.from_blob 将字符串读入图像实例,并定义SVG格式
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"

如何将SVG字符串转换为文件或PNG图像(Ruby)

编辑

如果该字符串只是SVG路径,则可以使用Magick :: Draw.path来“重建”矢量图形。文档和示例在这里


1
注意:在 rmagick(3.2.0)中,我不得不将最后一行更改为 img [0] .write() - Jeff Hykin

0
我们使用c3/d3生成了一些SVG图表,然后使用Capybara访问渲染SVG的网页,并保存页面快照。

1
你能分享更多细节吗? - Yshmarov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接