5

<canvas>そのため、要素に描画された画像データを保存する必要があります。また、最近のほとんどのブラウザーで機能する toDataURL() メソッドがあります。

例外は... ご想像のとおり... Internet Explorer です。

私はインターネットを検索しましたが、SVG/VML を使用してデータを保存する必要があると人々が言うところはどこでもありますが、その方法については言及されていません。IE で SVG/VML を使用した経験がないので、キャンバス要素に描画された画像を Internet Explorer で保存するにはどうすればよいですか? 誰も経験がありますか?

現時点では、複雑になりつつあるクライアントとサーバーの両方で描画コードを複製する必要がありました。したがって、クライアント (またはサーバー) 側のキャンバス タグに描画された画像を抽出できる方法があれば、それは確かに役立ちます。

ありがとう!

4

3 に答える 3

3
  1. canvas.toDataURL は IE9 で動作します。

  2. 古い IE で本当に必要な場合は、見積もりを差​​し上げます。

Explorer Canvas : VML で使用されるメソッドの性質上、toDataURL はサポートされません。JS を使用して VML をビットマップ イメージにラスタライズする方法は見つかりませんでした。サーバー サイド スクリプトを使用しても見つかりませんでした。したがって、本当に IE で toDataURL が必要な場合は、FxCanvas (http://code.google.com/p/fxcanvas/) または FlashCanvas (http://flashcanvas.net/) を使用する必要があります: Flash に基づく 2 つのソリューション.

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 に答える