2016-07-08 21 views
0

この質問は、Tainted canvases may not be exportedなど、このトピックに関する既存の質問の多くと同様ですが、同一ではありません。Chrome:汚染されたキャンバスはエクスポートできません。オフラインオンリーアプリケーション

私はオフライン専用のアプリを作成していますが、この方法はそのままでローカルWebサーバーは使用できません。データをベースイメージにコピーするためにキャンバス上のCORSチェックを回避する方法はありますか?

var c1 = document.getElementById("tmp1"); 
var ctx1 = c1.getContext('2d'); 
var tmpImg1 = document.getElementById("tmpimg1"); 
ctx1.drawImage(img1, 0, 0, 150, 150);  
tmpImg1.src = c1.toDataURL(); 

Chromeからのエラーメッセージが次のとおりです。:で

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


ここ


は、私がしようとしているコードの例です。オフラインのみの状況、利用可能なオプションそれでも同じ最終結果が出る?

+0

appとimageファイルの両方をユーザーのデスクトップに置きます。 – markE

+0

@markEそれがオプションだったらいいと思う。私はそれを行うにはあまりにも多くの画像があります。これは同じフォルダにあっても、必ずしもデスクトップ上にあるとは限りませんか? – vbnet3d

+0

同じフォルダがすべてのブラウザで動作するかどうかを確認してからしばらくしていましたが、以前は一部のブラウザでCORSエラーがスローされていましたが、他のブラウザでは表示されませんでした。私は別の解決策で答えを掲示しました。 – markE

答えて

1

すべてimg.srcをインラインbase64でエンコードされたURLとして指定できます。

img.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAA ..." 

このように、すべてのimgはあなたのアプリにとってローカルであり、CORSは満足しています。

+1

私はこのオプションについて忘れていました...私は、オフラインのみの状況には理想的な答えだと思います。助けてくれてありがとう! – vbnet3d

+0

イメージクロッパーを構築しているため、正確にエンコードされたURLはわかりません。コード内からそれらを生成する方法はありますか? – Kylar

関連する問題