我正在开发一个创建动态svg图像的Rails站点,并允许用户将他们制作的图像下载为png文件。我在视图中有一个按钮,它发布到控制器中的下载方法。我的第一个问题是它没有在@Circuit
中获取svg数据集,但我现在将其设置为读取一个带有svg的文件。
使用该图像,它会下载一个png文件,但它不到1k,并且在尝试查看时无法正常打开。我已经测试过将图像写入本地服务器上的文件并且它正常工作,图像打开正确,因此问题必须与我send_data
设置
def download
before = Magick::Image.read("circuit.png").first {format="png"}
blob = before.to_blob
png = Magick::Image.from_blob(blob)
# png = Magick::Image.from_blob(@Circuit)
# send_data png[0], :type => 'image/png', :disposition => 'attachment'
# test Magick::Image
# png[0].write("circuit-download.png")
#test send_data
test='<body>Hello World</body>'
send_data test, :type => 'text/html', :disposition => 'inline'
end
答案 0 :(得分:0)
无法让它在@Circuit中使用svg,但是我已经能够将@Circuit的内容保存为svg文件,然后转换为png文件并下载:
def download
img=Magick::Image.read("circuit.svg").first {format="svg"}
img.format = 'PNG'
send_data img.to_blob ,type: "image/png" , disposition: "attachment"
end