html5 - canvas 跨域問(wèn)題
問(wèn)題描述
在微信上給用戶修改頭像的時(shí)候,用canvas來(lái)截圖。結(jié)果報(bào)錯(cuò):Owechat_login.js:226 Uncaught TypeError: Failed to execute ’getImageData’ on ’CanvasRenderingContext2D’: The provided double value is non-finite.代碼:function cropImage(targetCanvas, x, y, width, height) {
var targetctx = targetCanvas.getContext(’2d’);var targetctxImageData = targetctx.getImageData(x, y, width, height); // sx, sy, sWidth, sHeight var c = document.createElement(’canvas’);var ctx = c.getContext(’2d’); c.width = width;c.height = height; ctx.rect(0, 0, width, height);ctx.fillStyle = ’white’;ctx.fill();ctx.putImageData(targetctxImageData, 0, 0); // imageData, dx, dy document.getElementById(’image’).src = c.toDataURL(’image/jpeg’, 0.92);document.getElementById(’image’).style.display = ’initial’; }
問(wèn)題解答
回答1:初步看了下代碼貌似沒(méi)什么問(wèn)題的,排除掉圖片可能存在的跨域問(wèn)題,還有一個(gè)問(wèn)題樓主可以查看下就是getImageData 的傳參,需要是number類型,樓主可以先使用
console.log(typeof x, typeof y, typeof width, typeof height)
來(lái)看看
回答2:應(yīng)該不是跨域吧,跨域會(huì)寫(xiě) The canvas has been tainted by cross-origin data
console.log一下getImageData的參數(shù)吧。The provided double value is non-finite有可能是吧string當(dāng)數(shù)傳進(jìn)來(lái)了。
相關(guān)文章:
1. html調(diào)整想要的文字大小和位置2. angular.js - 請(qǐng)教一個(gè)關(guān)于angularjs的小問(wèn)題3. javascript - 底部組件,vue綁定class文字為什么不變色,如下代碼4. 前端 - vue2.0 使用mint-ui的mt-popup組件時(shí)怎么兼容低版本ios(7.1.2)?5. angular.js - 為什么加了 CSS3 的 transition 會(huì)導(dǎo)致 Angular 數(shù)據(jù)綁定失效?6. android - 百度地圖加載完成監(jiān)聽(tīng)7. javascript - 在iframe子頁(yè)面 通過(guò)window.parent.document打開(kāi)父頁(yè)面的modal層不能正常關(guān)閉8. javascript - 一個(gè)JS的算法,求大神解答9. javascript - 微信IOS頁(yè)面中input type=number輸入數(shù)字無(wú)法顯示,安卓顯示正常10. css3 - 寬度設(shè)置的都是百分比,為什么還是不適配移動(dòng)端?
