所以我需要保存在<canvas>
元素上绘制的图像数据。还有toDataURL()方法适用于大多数现代浏览器。
除了......你猜对了...... Internet Explorer。
我搜索了互联网,但是到处都有人说我应该使用SVG / VML来保存数据,但他们从不提及如何。我没有在IE中使用SVG / VML的经验,那么如何在Internet Explorer中保存画布元素中绘制的图像?有没有人有经验?
目前,我不得不在客户端和服务器上复制绘图代码,这开始变得复杂。因此,如果有一种方法可以提取在客户端(或服务器)端的canvas标签上绘制的图像,那肯定有帮助。
谢谢!
答案 0 :(得分:3)
canvas.toDataURL适用于IE9。
如果你真的需要它用于旧IE ..好吧..我只会给你一个报价
由于使用的方法的性质,将不支持toDataURL Explorer Canvas:VML。我们没有找到将VML栅格化为位图的方法 使用JS的图像,甚至没有服务器端脚本。所以,如果你 真的需要IE中的DataURL,你必须使用FxCanvas (http://code.google.com/p/fxcanvas/)或FlashCanvas (http://flashcanvas.net/):两种基于Flash的解决方案。
答案 1 :(得分:2)
我遇到了同样的问题。我想要做的是将画布转换为图像,然后在新选项卡中打开它。我发现转换它不是问题,但在新链接中打开了。我通过生成图像,将其放入img标记,然后将其包含在新页面中来解决它。然后我使用本教程打开了新页面 - http://www.javascripter.net/faq/writingt.htm
这就是我做的事情
var canvas = document.getElementById('canvas1');
var dataURL = canvas.toDataURL();
var width = parseInt($("#main").width()); //main is the div that contains my canvas
var height = parseInt($("#main").height());
newWindow("<img src=\"" + dataURL + "\"/>");
function newWindow(content) {
top.consoleRef = window.open("", "Organisational Structure",
"width="+width+",height="+height
+ ",menubar=0"
+ ",toolbar=1"
+ ",status=0"
+ ",scrollbars=1"
+ ",resizable=1")
top.consoleRef.document.writeln(
"<html><head><title>Console</title></head>"
+ "<body bgcolor=white onLoad=\"self.focus()\">"
+ content
+ "</body></html>"
)
top.consoleRef.document.close()
}
答案 2 :(得分:1)
您可能能够获得与之相同的VML,但这是一种XML格式,因此可能不是您想要的。如果不使用插件,就无法从IE获取图像。