Tainted canvases may not be exported的問題解決


項目里使用到用canvas生成海報,在toDataURL報了這個錯誤Tainted canvases may not be exported。

原因就在於使用了跨域的圖片,所以說是被污染的畫布。
解決方案如下
1】為image請求添加跨域

var image = new Image() image.setAttribute("crossOrigin",'Anonymous') image.src = src 

但也許有可能服務器不讓你跨域請求圖片(也不知道為啥),那么用到方案2
2】通過把請求的圖片轉化成base64再進行使用
代碼如下

function getURLBase64(url) { return new Promise((resolve, reject) => { var xhr = new XMLHttpRequest() xhr.open('get', url, true) xhr.responseType = 'blob' xhr.onload = function() { if (this.status === 200) { var blob = this.response var fileReader = new FileReader() fileReader.onloadend = function(e) { var result = e.target.result resolve(result) } fileReader.readAsDataURL(blob) } } xhr.onerror = function() { reject() } xhr.send() }) }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM