删除图像的白色javascript导致什么都没有返回

时间:2015-06-03 19:54:28

标签: javascript jquery html image

我使用以下代码删除图像中的白色。它适用于原始小提琴的形象,但它不适用于我的。我相信代码完全没问题,这对我使用的图像有问题,但为什么呢?我怎样才能让它适合我的形象?

在教程中使用原始图像:https://jsfiddle.net/gaby/UuCys/3/

不使用我的图片(我只是替换img src):http://jsfiddle.net/UuCys/119/

这是代码

当我尝试在更改前返回每个像素时,每个像素的红色,绿色或蓝色值为0 ...为什么?

function white2transparent(img)
{
    var c = document.createElement('canvas');

    var w = img.width, h = img.height;

    c.width = w;
    c.height = h;

    var ctx = c.getContext('2d');

    ctx.drawImage(img, 0, 0, w, h);
    var imageData = ctx.getImageData(0,0, w, h);
    var pixel = imageData.data;

    var r=0, g=1, b=2,a=3;
    for (var p = 0; p<pixel.length; p+=4)
    {
      if (
          pixel[p+r] == 255 &&
          pixel[p+g] == 255 &&
          pixel[p+b] == 255) // if white then change alpha to 0
      {pixel[p+a] = 0;}
    }

    ctx.putImageData(imageData,0,0);

    return c.toDataURL('image/png');
}

0 个答案:

没有答案