解決 canvas 將圖片轉(zhuǎn)為base64報錯: Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasEleme...

問題描述

當用戶點擊分享按鈕時,生成一張海報,可以保存圖片分享到朋友圈,用戶的圖片是存儲在阿里云的OSS,當海報完成后,執(zhí)行.canvas.toDataURL("image/png")時,出現(xiàn)index.html:28 Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported的錯誤提示,這句話的翻譯是uncaught domexception:未能對“htmlcanvaselement”執(zhí)行“todataurl”:無法導出受污染的畫布。因為圖片跨域了,對畫布造成了污染。

解決方法

搜索相關問題,大多是為img設置crossOrigin屬性,實現(xiàn)圖片允許跨域,即:img.setAttribute("crossOrigin",'Anonymous'),我為圖片添加這個屬性后,圖片無法顯示了,報了一個錯誤:? Access to image at 'https://claystar.oss-cn-shenzhen.aliyuncs.com/pic/9dd6d55c5c7334d9448c4628e6ff69f6.jpg' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.? ? ? ??

通過和同事溝通討論得知,只需要為圖片添加一個時間戳即可。最后解決方式:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? img.src='http://www.xxxx.png' + '?time=' + new Date()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容