我在这个问题上卡住了,希望你们能帮助我。我的目标是,在点击一个链接、按钮或图像后,使用 toDataURL 将画布转换为图像。然后打开一个包含此图像的新窗口。如何使用 Ruby on Rails 将由 toDataURL 生成的数据 URL 传递到新窗口?提前感谢您的帮助。
首先,这与Rails关系不大。不过你可以使用Ruby来解决这个问题。
像你已经在做的那样,首先获取画布的内容:
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字符串发送到服务器,让你的应用程序创建一个实际的图片并使用视图来呈现它:
var base64 = dataURL.replace(/^data:image\/(png|jpg);base64,/, "") ;
var window = window.open('http://www.yourapp.com/controller/action?base64='+base64);
!这只是一个简化的示例,假定图像非常小。如果您的图像更大,您将不得不使用“post”请求,因为您的 URL 不会携带数据,因为字符串太长了!
然后在服务器上,您可以使用以下内容来创建图像:
require 'base64'
File.open('your/image/path/and/name.gif', 'wb') do|f|
f.write(Base64.decode64(params[:base64]))
end
那就只是打开图片并相应地渲染视图的问题。
虽然我来晚了,但这里有一个快速而简单的方法来解决这个问题:
window.open(document.getElementById("mycanvas").toDataURL());
var dataURL = canvas.toDataURL("image/png");
var newTab = window.open(dataURL, 'Image');
newTab.focus();
它可能会在未来帮助某些人。
window.open
函数所需的参数,看看是否有帮助。 - polarblau