我很困在这个问题上,希望你们能帮助我。
我想要实现的是点击一个链接、按钮或图像,这看起来更简单,我使用 toDataURL 将 Canvas 转换为图像。之后会打开一个包含此图像的新窗口。
如何使用 ruby on rails 将从 toDataURL 生成的数据 url 传递到新窗口?
提前致谢。
最佳答案
首先,这与 Rails 没有太大关系。不过,您可以使用 Ruby 来解决这个问题。
首先像您已经在做的那样获取 Canvas 的内容:
var dataURL = canvas.toDataURL("image/png");
此时您可以简单地使用 Javascript 打开一个新窗口并直接在其中打开图像(不需要服务器交互):
var window = window.open();
window.document.write('<img src="'+dataURL+'"/>');
$('a.my-link').click(function(){
open().document.write('<img src="'+dataURL+'"/>');
return false;
});
这里有一个 fiddle 来说明这一点:http://jsfiddle.net/XtUFt/
或者您可以将纯 base64 字符串发送到服务器并让您的应用创建一个实际图像并使用 View 来呈现它:
var base64 = dataURL.replace(/^data:image\/(png|jpg);base64,/, "") ;
var window = window.open('http://www.yourapp.com/controller/action?base64='+base64);
!这是一个简化的示例,并假设一个非常的图像。如果您的图片无论如何都更大,则您将不得不使用“发布”请求,因为您的 URL 将不会携带数据,因为字符串太长了!
然后在服务器上您可以使用它来创建图像:
require 'base64'
File.open('your/image/path/and/name.gif', 'wb') do|f|
f.write(Base64.decode64(params[:base64]))
end
然后这只是打开图像并相应地渲染 View 的问题。
关于javascript - 使用 ruby on rails 和 javascript 将 Canvas 转换为图像并在新窗口中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5403709/