5

所以我需要保存在<canvas>元素上绘制的图像数据。还有适用于大多数现代浏览器的 toDataURL() 方法。

除了......你猜对了...... Internet Explorer。

我在网上搜索过,但到处有人说我应该使用 SVG/VML 来保存数据,但他们从未提及如何。我对 IE 中的 SVG/VML 没有任何经验,那么如何保存在 Internet Explorer 中画布元素中绘制的图像?有没有人有经验?

目前,我不得不在客户端和服务器上复制绘图代码,这开始变得复杂。因此,如果有一种方法可以提取在客户端(或服务器)端的画布标签上绘制的图像,那肯定会有所帮助。

谢谢!

4

3 回答 3

3
  1. canvas.toDataURL 适用于 IE9。

  2. 如果你真的需要它来使用旧的 IE .. 好吧.. 我会给你一个报价

由于 Explorer Canvas 使用的方法的性质,不支持 toDataURL:VML。我们没有找到使用 JS 将 VML 光栅化为位图图像的方法,甚至没有使用服务器端脚本。所以如果你真的需要在 IE 中使用 toDataURL,你将不得不使用 FxCanvas (http://code.google.com/p/fxcanvas/) 或 FlashCanvas (http://flashcanvas.net/) :两种基于 Flash 的解决方案.

http://code.google.com/p/explorercanvas/issues/detail?id=77

于 2011-09-16T14:00:04.800 回答
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()
}
于 2013-02-11T11:53:30.687 回答
1

您可能能够获得 VML 和相同的,但这是一种 XML 格式,所以这可能不是您想要的。如果不使用插件,您无法从 IE 中获取图像。

于 2009-03-11T09:04:24.333 回答