主頁(yè) > 知識(shí)庫(kù) > Canvas引入跨域的圖片導(dǎo)致toDataURL()報(bào)錯(cuò)的問題的解決

Canvas引入跨域的圖片導(dǎo)致toDataURL()報(bào)錯(cuò)的問題的解決

熱門標(biāo)簽:當(dāng)涂高德地圖標(biāo)注 成都智能外呼系統(tǒng)平臺(tái) 云南大理400電話申請(qǐng)官方 南寧點(diǎn)撥外呼系統(tǒng)哪家公司做的好 電銷機(jī)器人電話用什么卡 鎮(zhèn)江智能外呼系統(tǒng)有效果嗎 江蘇智能電銷機(jī)器人哪家好 四川點(diǎn)撥外呼系統(tǒng) 黃島區(qū)地圖標(biāo)注

本文介紹了Canvas引入跨域的圖片導(dǎo)致toDataURL()報(bào)錯(cuò)的問題的解決,分享給大家,具體如下:

【場(chǎng)景】

用戶打開網(wǎng)頁(yè),則請(qǐng)求騰訊COS(圖片服務(wù)器)上的圖片。使用canvas繪圖。

然后,用戶可以重新選擇圖片、裁剪、上傳。

【問題】

圖片首次載入,選擇新圖片后裁剪、繪制都沒有問題。但上傳失敗,報(bào)錯(cuò)如下:

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

經(jīng)過(guò)了解,需要在圖片首次引用時(shí),設(shè)置crossOrigin字段:

                var c=document.getElementById("cover_show");
                var img=new Image();
                img.src="http://vsqx-cover-xxxxxx.coscd.myqcloud.com/"+this.vsqx_uid+".jpg";
                //增加這一行:
                img.setAttribute("crossOrigin",'anonymous');
                img.onload = function(){
                    var cxt=c.getContext("2d");
                    cxt.drawImage(img,0,0,300,150,0,0,200,126);
                }

然后再次運(yùn)行。發(fā)現(xiàn)圖片首次載入時(shí),不顯示了。。。

控制臺(tái)報(bào)錯(cuò)如下:

【最終解決方法】

登錄騰訊云COS,找到這個(gè)儲(chǔ)存桶,設(shè)置“跨域訪問CORS”。(其他PHP/JAVA服務(wù)器同理)

再次測(cè)試:圖片顯示成功,圖片上傳成功。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:南京 廣西 佳木斯 西寧 十堰 咸寧 淮安 酒泉

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Canvas引入跨域的圖片導(dǎo)致toDataURL()報(bào)錯(cuò)的問題的解決》,本文關(guān)鍵詞  Canvas,引入,跨域,的,圖片,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Canvas引入跨域的圖片導(dǎo)致toDataURL()報(bào)錯(cuò)的問題的解決》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Canvas引入跨域的圖片導(dǎo)致toDataURL()報(bào)錯(cuò)的問題的解決的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章