在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML5  Python  HTML/ 用Js將彩色圖片轉(zhuǎn)換成黑白,失敗

用Js將彩色圖片轉(zhuǎn)換成黑白,失敗

剛剛接觸canvas,學(xué)著把一張圖片轉(zhuǎn)換成黑白的。
但是始終不能成功,有點(diǎn)懵逼。

謝謝大家。

    <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)
回答
編輯回答
萌小萌

file:///訪(fǎng)問(wèn)模式換成http://xxxxxx

2018年8月10日 12:39
編輯回答
紓惘

提問(wèn)也是技術(shù)活,要先把你的問(wèn)題描述清楚,提供必要的素材,想要實(shí)現(xiàn)的功能和樣式。

2018年1月29日 10:33
編輯回答
絯孑氣

是什么不成功?報(bào)了什么錯(cuò)?出現(xiàn)了什么現(xiàn)象?你不可能就貼一段代碼上來(lái)讓回答的人猜吧。

代碼無(wú)錯(cuò),如果你這邊不能運(yùn)行,一定是你直接用點(diǎn)開(kāi)html的方式來(lái)運(yùn)行代碼。

通過(guò)這種方式運(yùn)行的話(huà),你引入的圖片可能會(huì)被瀏覽器認(rèn)為是不同的站點(diǎn),從而canvas在getImageData的時(shí)候出現(xiàn)跨域錯(cuò)誤,canvas不能獲取渲染的跨域的圖片的信息。

如果你想正確運(yùn)行,需要用IIS或者nginx這樣的東西來(lái)做個(gè)本地站點(diǎn),或者使用webpack-dev-server

2017年12月17日 04:18