gpt4 book ai didi

javascript - 在 Ruby 中从 dataURL 渲染 base64 图像并发送回图像

转载 作者:行者123 更新时间:2023-12-03 09:15:32 24 4
gpt4 key购买 nike

所以我对 Ruby 很陌生,但我想要得到与本教程类似的东西,我将 Canvas 作为 base64 编码图像传递,并返回一个要下载的 png。

http://www.intridea.com/blog/2013/1/9/downloadable-svg-in-png-format

我需要这样做才能支持 IE9,但我无法从上述教程中获取代码示例,而且我对 Ruby 的了解还不够,无法弄清楚。

这是前端 JavaScript。

pushToServer: ()->
html2canvas([$(".hidden_container")[0]],{
onrendered: (canvas)=>
strDataURI = canvas.toDataURL()
@temp_container.children().remove()
@temp_container.hide()

$.ajax
url: '/svg/create'
data: {svg: "#{strDataURI}"}
dataType: 'json'
type: 'POST'
success: (response, status, xhr) =>
window.location.href = "/downloadable/" + response.id + '.png'
error: (response, status)=>
console.log response
})

和 ruby​​ 代码

# routes.rb
match "downloadable/:id(.:format)", :to => 'svg#show'

# svg_controller.rb
class SvgController < ApplicationController
require "base64"

def show
@svg = Svg.where(id: params[:id]).first
respond_to do |format|
format.png {
headers['Content-type'] = 'image/png'
headers["Content-Disposition"] = "attachment; filename=\"chart.png\""
@result = Base64.decode64(@svg.content.gsub('data:image/png;base64,', ''))
render :text => @result
}
end
end
end

对我来说,似乎我需要一个 ruby​​ 路由来将初始发布请求从/svg/create 路由到某个地方,但我真的不知道该怎么做。

感谢任何帮助。谢谢。

最佳答案

您确实需要另一个 Action 来接收来自 Javascript 的请求,请将其添加到您的路由中:

match "/svg/create", :to => 'svg#show'

我不太确定#{strDataURI}到底是什么,但它一定是base64编码的 Canvas ,解码仅发生在显示操作上,所以你唯一拥有的就是在创建中要做的是检查是否给出了参数svg,并用它创建一个新记录:

 def create
return if not params[:svg]
svg = Svg.create(content: params[:svg])
render :json => svg
end

我不知道您的 SVG 模型中是否还有其他字段,如果没有,此代码可能会起作用!

关于javascript - 在 Ruby 中从 dataURL 渲染 base64 图像并发送回图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31962835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com