我从浏览器(Javascript)向运行Rails(Ruby)的服务器发送SVG字符串。我想将此字符串转换为具有透明度的PNG,或者至少是SVG文件,以便稍后将其转换
有什么想法吗?我安装了RMagick,但我还是不确定如何从字符串创建文件。
实现此目的的任何其他解决方案?
我们的想法是创建简单的标识"动态
答案 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"
修改强>
如果字符串只是一个SVG路径,则需要Magick::Draw.path
来“重建”矢量图形。 Doc&amp;例子here。
答案 1 :(得分:-1)
我们使用c3 / d3生成的一些SVG图表完成了这项工作。我们最终使用Capybara访问一个呈现SVG的网页,然后保存页面的快照。