javascript - canvas畫圖
問題描述
寫了一個(gè)函數(shù),第一次調(diào)用canvas的drawImage將本地的一張圖片的一部分給畫下來(能夠成功),然后將canvas畫好的這張圖調(diào)用toDataURL轉(zhuǎn)化為image對(duì)象的src屬性,然后對(duì)這張canvas畫的圖調(diào)用同樣的方法進(jìn)行二次繪畫為什么不能成功?
function paint(img) {var canvas = document.createElement(’canvas’)canvas.width = 400canvas.height = 400var ctx = canvas.getContext(’2d’)ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, 400, 400)document.body.appendChild(canvas)//畫好的第一個(gè)canvas對(duì)象可以正常顯示var newImg = new Image()newImg.src = canvas.toDataURL()newImg.onload = function() { var canvas2 = document.createElement(’canvas’) canvas2.width = 200 canvas2.height = 200 var ctx2 = canvas2.getContext(’2d’) ctx2.drawImage(newImg, 0, 0, Math.abs(posX), Math.abs(posY), 0, 0, 200, 200)//這里之所以把第一次的canvas作圖加載成一張圖片,是因?yàn)椴恢纁anvas可不可以繪制canvas document.body.appendChild(newImg)//這張圖片能正常顯示 document.body.appendChild(canvas2)//canvas元素加上了,但是繪圖不成功} }
問題解答
回答1:你是不是用的外站圖片? 如果是,需要給圖片加上 crossOrigin='Anonymous' 屬性。
html方式
<img src='http://m.cgvv.com.cn/wenda/...' crossOrigin='Anonymous' />
js方式
var image = new Image();image.src = 'http://m.cgvv.com.cn/wenda/...';image.crossOrigin = 'Anonymous';
你可以在線把玩一下我用你的代碼修改的可運(yùn)行的版本:https://jsfiddle.net/5g9n9esk/
相關(guān)文章:
1. android - NavigationView 的側(cè)滑菜單中如何保存新增項(xiàng)(通過程序添加)2. 老師 我是一個(gè)沒有學(xué)過php語言的準(zhǔn)畢業(yè)生 我希望您能幫我一下3. 編程學(xué)習(xí)心得分享(共80條)4. 關(guān)于thinkphp 5.1中,ajax提交數(shù)據(jù)url的格式寫法,加花括號(hào)就出錯(cuò),請(qǐng)老師指點(diǎn)5. php7.3.4中怎么開啟pdo驅(qū)動(dòng)6. tp5 不同控制器中的變量調(diào)用問題7. 提示語法錯(cuò)誤語法錯(cuò)誤: unexpected ’abstract’ (T_ABSTRACT)8. 這段代碼既不提示錯(cuò)誤也看不到結(jié)果,請(qǐng)老師明示錯(cuò)在哪里,謝謝!9. ueditor上傳服務(wù)器提示后端配置項(xiàng)沒有正常加載,求助!!!!!10. php - 一個(gè)操作請(qǐng)求多個(gè)服務(wù)如何保證數(shù)據(jù)的安全?
