Canvas がクロスドメイン画像を導入し、toDataURL() エラーが発生する。
2022-02-01 13:31:48
この記事では、Canvasがクロスドメイン画像を導入するとtoDataURL()エラーが発生する問題の解決策を説明し、以下のように共有します。
[シーン】です。]
ユーザーがWebページを開き、Tencent COS(画像サーバー)に画像を要求する。キャンバスを使って描画する。
その後、ユーザーは画像を再選択し、トリミングして、アップロードすることができます。
[質問】です。]
初めて画像を読み込み、新規画像選択後のトリミング、描画は問題ありません。しかし、アップロードに失敗し、以下のエラーが報告されます。
HTMLCanvasElement'で'toDataURL'の実行に失敗しました。汚染されたキャンバスはエクスポートされない可能性があります。
画像を最初に参照したときにcrossOriginフィールドを設定する必要があることを理解した上で。
var c=document.getElementById("cover_show");
var img=new Image();
img.src="http://vsqx-cover-xxxxxx.coscd.myqcloud.com/"+this.vsqx_uid+".jpg";
// Add this line.
img.setAttribute("crossOrigin",'anonymous');
img.onload = function(){
var cxt=c.getContext("2d");
cxt.drawImage(img,0,0,300,150,0,0,200,126);
}
そして、もう一度実行してみてください。最初に読み込んだときに画像が表示されないことを発見。
コンソールで以下のエラーが報告されます。
[ファイナルソリューション】。]
Tencent Cloud COSにログインし、このストレージバケットを見つけ、"クロスドメインアクセスCORS"を設定します。(他のPHP/JAVAサーバーでも同じ)
再度テスト:画像は正常に表示され、画像のアップロードも成功しました。
今回は以上ですが、皆様の学習のお役に立てれば幸いです。また、スクリプトハウスを応援していただければ幸いです。
関連
-
HTML5でWeChatの共有を呼び起こす外部ブラウザ
-
ラチェット式モーダルボックスの実装
-
h5ページ evokeアプリがインストールされていない場合、ダウンロードにジャンプします(iOS、Android)。
-
携帯電話のHtml5を達成するためにカメラのメソッドを呼び出すには
-
divやimgの画像の高さを幅に合わせる方法
-
入力ボックスの種類が数字のときに上下の矢印を消すHTML5メソッド
-
postMessageを使用してiframeの高さを適応させる例
-
html5モバイル価格入力キーボードの実装
-
ディテールキャンバスの描画Webフォントいくつかのメソッド
-
HTML5でjsonオブジェクトを使用するためのサンプルコード
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン