为了账号安全,请及时绑定邮箱和手机立即绑定

用Js将彩色图片转换成黑白,失败

用Js将彩色图片转换成黑白,失败

慕工程0101907 2019-03-21 18:13:51
刚刚接触canvas,学着把一张图片转换成黑白的。但是始终不能成功,有点懵逼。谢谢大家。    <body>        <canvas width="500" height="500"></canvas>        <script>            var canvas = document.querySelector("canvas");            var ctx = canvas.getContext("2d");            var image = new Image();            image.onload = function(){                ctx.drawImage(image,0,0);                makeGrayScale();            }            image.src = "images/background.jpg";            var makePixelGrayScale = function (r,g,b,a){                var y = ( 0.3 * r) + ( 0.59 * g ) + ( 0.11 * b);                return {r:y,g:y,b:y,a:y};            };            function makeGrayScale(){                var r,g,b,a;                var imageData = ctx.getImageData(0,0,500, 500)                var numPixels = imageData.data.length/4;                for (var i=0; i<numPixels; i++){                    r = imageData.data[i*4+0];                    g = imageData.data[i*4+1];                    b = imageData.data[i*4+2];                    a = imageData.data[i*4+3];                    pixel = makePixelGrayScale(r,g,b,a);                    imageData.data[i*4+0] = pixel.r;                    imageData.data[i*4+1] = pixel.g;                    imageData.data[i*4+2] = pixel.b;                    imageData.data[i*4+3] = pixel.a;                }                ctx.putImageData(imageData,0,0);            };        </script>    </body>Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.    at makeGrayScale (file:///C:/Users/yocor/Github/aboutCanvas/createCanvas.html:26:37)    at Image.image.onload (file:///C:/Users/yocor/Github/aboutCanvas/createCanvas.html:14:17)
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

是什么不成功?报了什么错?出现了什么现象?你不可能就贴一段代码上来让回答的人猜吧。

代码无错,如果你这边不能运行,一定是你直接用点开html的方式来运行代码。

通过这种方式运行的话,你引入的图片可能会被浏览器认为是不同的站点,从而canvas在getImageData的时候出现跨域错误,canvas不能获取渲染的跨域的图片的信息。

如果你想正确运行,需要用IIS或者nginx这样的东西来做个本地站点,或者使用webpack-dev-server


查看完整回答
反对 回复 2019-04-02
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

提问也是技术活,要先把你的问题描述清楚,提供必要的素材,想要实现的功能和样式。


查看完整回答
反对 回复 2019-04-02
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

file:///访问模式换成http://xxxxxx


查看完整回答
反对 回复 2019-04-02
  • 3 回答
  • 0 关注
  • 698 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号