Colors 帆布不';行不通

Colors 帆布不';行不通,colors,grayscale,Colors,Grayscale,我正在尝试使用画布。我正在尝试制作一个按钮,当你点击它时,它会将图片更改为灰度等。这是我的代码,我不知道为什么它不工作 <script> $('#buttonID').click(function generateRGBKs( img ) { var w = img.width; var h = img.height; var rgbks = []; var canvas = document.createEl

我正在尝试使用画布。我正在尝试制作一个按钮,当你点击它时,它会将图片更改为灰度等。这是我的代码,我不知道为什么它不工作

<script>
    $('#buttonID').click(function generateRGBKs( img ) {
        var w = img.width;
        var h = img.height;
        var rgbks = [];

        var canvas = document.createElement("canvas");
        canvas.width = w;
        canvas.height = h;

        var ctx = canvas.getContext("2d");
        ctx.drawImage( img, 0, 0 );

        var pixels = ctx.getImageData( 0, 0, w, h ).data;

        // 4 is used to ask for 3 images: red, green, blue and
        // black in that order.
        for ( var rgbI = 0; rgbI < 4; rgbI++ ) {
            var canvas = document.createElement("canvas");
            canvas.width  = w;
            canvas.height = h;

            var ctx = canvas.getContext('2d');
            ctx.drawImage( img, 0, 0 );
            var to = ctx.getImageData( 0, 0, w, h );
            var toData = to.data;

            for (
                    var i = 0, len = pixels.length;
                    i < len;
                    i += 4
            ) {
                toData[i  ] = (rgbI === 0) ? pixels[i  ] : 0;
                toData[i+1] = (rgbI === 1) ? pixels[i+1] : 0;
                toData[i+2] = (rgbI === 2) ? pixels[i+2] : 0;
                toData[i+3] =                pixels[i+3]    ;
            }

            ctx.putImageData( to, 0, 0 );

            // image is _slightly_ faster then canvas for this, so convert
            var imgComp = new Image();
            imgComp.src = canvas.toDataURL();

            rgbks.push( imgComp );
        }

        return rgbks;

    });


 </script>
 </head>
<body>
<img src="profile.jpg" width="400px" height="380px">
<FORM>

<INPUT TYPE="BUTTON" VALUE="Change Color" ONCLICK="buttonID" class="buttonID"> 
</FORM>

$('#buttonID')。单击(函数generateRGBKs(img){
var w=img.宽度;
var h=img.高度;
var rgbks=[];
var canvas=document.createElement(“canvas”);
画布宽度=w;
canvas.height=h;
var ctx=canvas.getContext(“2d”);
ctx.drawImage(img,0,0);
var pixels=ctx.getImageData(0,0,w,h).data;
//4用于请求3个图像:红色、绿色、蓝色和蓝色
//按那个顺序是黑色的。
对于(var rgbI=0;rgbI<4;rgbI++){
var canvas=document.createElement(“canvas”);
画布宽度=w;
canvas.height=h;
var ctx=canvas.getContext('2d');
ctx.drawImage(img,0,0);
var to=ctx.getImageData(0,0,w,h);
var toData=to.data;
为了(
var i=0,len=pixels.length;
i
下面是完整的故事,对于这样的问题,创建一个JSFIDLE将是非常棒的。这将使我们很容易尝试我们的答案,以确保他们的工作之前提交回来这里。因为我没有“profile.jpg”,所以我用一张随机的谷歌图片来填充它:对不起,我不知道有这样的事情存在。我总是很高兴向人们介绍伟大的事情。你是今天幸运的10000人之一:我正在尝试添加一个代码,以便对图像应用过滤,然后能够在html和服务器上使用新的颜色保存新图像,我正在使用struts。。。