javascript - canvas ImageData 去除白色像素

标签 javascript html canvas

我有一些具有白色背景的 html 图像。我需要删除白色背景。我在想我可以让所有的白色像素透明,但我不知道该怎么做。我只想使用 html/javascript。

最佳答案

这是怎么做的..

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');
}

要使用它,请将图像的 src 设置为该方法的返回值。

var someimage = document.getElementById('imageid');
someimage.src = white2transparent(someimage);

http://jsfiddle.net/gaby/UuCys/


要使此代码正常工作,图像必须来自与代码相同的域(出于安全原因)。

关于javascript - canvas ImageData 去除白色像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6755314/

相关文章:

Javascript - then 函数不执行

javascript - 风 sails js : Setting response method based on request parameter

javascript - 使用粘性页脚的内容的 100% 高度

html - 在 HTML/CSS 中设置选定的菜单项

javascript - 当用户在屏幕上拖动/平移时 Canvas 清晰

javascript - Canvas 矩形具有相同的 x 和 y,但不应如此

javascript - Angular ng-option 过滤器返回除

javascript - 如何防止我的内容区域移动

html - select/option html tag dotted outline 问题在firefox中

JavaFX - 在高 dpi 的 Canvas 上使用矩形绘制时避免模糊