2009-03-11 14 views
5

したがって、<canvas>要素に描画された画像データを保存する必要があります。ほとんどの現代のブラウザで動作するtoDataURL()メソッドがあります。Internet Explorer toDataURL()の代替?

...あなたはそれを推測しました... Internet Explorer。

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

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

ありがとうございます!

答えて

1

VMLを取得しても同じことができますが、それはXML形式なので、おそらくあなたが望むものではありません。プラグインを使わずにIEから画像を取得する方法はありません。

+1

をやったことある - 私は、このチュートリアルを使用して新しいページが開かれましたか? –

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

  2. あなたが本当に古いIEのためにそれを必要とする場合..も..私はあなたに

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

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

2

私は同じ問題を抱えていました。私がやりたかったのは、キャンバスをイメージに変換して新しいタブで開くことでした。私はそれを変換することが問題ではなかったが、新しいリンクで開くことがわかった。画像を生成してimgタグに入れ、それを新しいページに含めて解決しました。 BMPまたはPNGにVMLを変換する簡単な方法があります。ここ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() 
} 
+0

これは私の立場からは非常に良い解決策です。私が問題を抱えていたのはIE9でしたが、IE9では "Organizational Structure"値を使用すると、window.openの2番目のパラメータとして空の文字列を使用する必要がありました。 – MartynJones87