7

写真、テキスト、地図をキャンバスにロードできる Fabric.js プロトタイプがあります。完成したら、キャンバスを画像として保存できるようにしてほしいです。私は標準を使用してみました:

canvasURL = canvas.toDataURL();
var image = new Image();
image.src = canvas.toDataURL("image/png");
$('#canvasContainer').replaceWith(image);

しかし、キャンバスはtainted-画像のせいだと思います(上記の方法は、テキストだけの場合に機能します)。エラーは次のとおりです。

Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported. 

Fabric の組み込みメソッドを使用して、SVG として保存できます。

var canvasSVG = canvas.toSVG();
$('#canvasContainer').replaceWith(canvasSVG);

しかし、私はむしろPNG / JPGが欲しいです。何か案は?

キャンバスのシリアル化に関する Fabric.js のドキュメントを次に示します。

http://fabricjs.com/fabric-intro-part-3/#serialization

4

4 に答える 4

4

次の条件が満たされている必要があります。

  1. クロスドメイン<img>要素にはcrossorigin属性が含まれている必要があります。
  2. 画像をホストするサーバーは、応答で Access-Control-Allow-Origin ヘッダーを返し、ワイルドカードまたは特定のドメインを値として返す必要があります。
  3. HTMLMediaElementブラウザは、特に でCORS をサポートする必要がありHTMLImageElementます。これは現在、Chrome、Firefox、および Opera 15 以降でのみ可能です。
于 2014-04-15T16:23:10.460 に答える
2

補足として、サーバーではなくローカル コンピューターで開発している場合は、おそらくこのセキュリティ エラー メッセージが表示されることに注意してください。

于 2016-06-11T19:47:51.620 に答える