javascript - canvas画图
问题描述
写了一个函数,第一次调用canvas的drawImage将本地的一张图片的一部分给画下来(能够成功),然后将canvas画好的这张图调用toDataURL转化为image对象的src属性,然后对这张canvas画的图调用同样的方法进行二次绘画为什么不能成功?
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)//画好的第一个canvas对象可以正常显示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作图加载成一张图片,是因为不知道canvas可不可以绘制canvas document.body.appendChild(newImg)//这张图片能正常显示 document.body.appendChild(canvas2)//canvas元素加上了,但是绘图不成功} }
问题解答
回答1:你是不是用的外站图片? 如果是,需要给图片加上 crossOrigin='Anonymous' 属性。
html方式
<img src='https://www.haobala.com/wenda/...' crossOrigin='Anonymous' />
js方式
var image = new Image();image.src = 'https://www.haobala.com/wenda/...';image.crossOrigin = 'Anonymous';
你可以在线把玩一下我用你的代码修改的可运行的版本:https://jsfiddle.net/5g9n9esk/
相关文章:
1. IOS app应用软件的id号怎么查询?比如百度贴吧的app-id=4779278132. javascript - node.js中stat() access() open() readFile()都能判断文件是否存在?3. .gitignore 如何仅忽略根目录下的index.html4. python 中如何自动安装第三方库?5. css - 为什么我没见到一个浏览器支持多重伪元素和嵌套伪元素?6. angular.js - ASP.NET Webform 中能使用 AngularJS 吗?7. java - 同步/异步与阻塞/非阻塞之间的差异具体是什么?8. node.js - nodeJS 写入文件的内容怎么不是按次序的?9. node.js - nodejs中把热request保存下来,使用JSON.stringify(req)报错,请问怎么解决?10. css - 移动端 盒子内加overflow-y:scroll后 字体会变大
