如何在html5和javascript中编辑像素并删除画布图像中的白色背景
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在html5和javascript中编辑像素并删除画布图像中的白色背景,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1548字,纯文字阅读大概需要3分钟。
内容图文
如果我加载一个图像,我怎么能遍历它的所有像素并将白色像素(或我指定的颜色)转为透明?
我知道如何做到这一点,但循环过程应该像2d数组,所以它将涉及两个for循环.
我想我会从顶行第一个像素开始,向右迭代,如果它是一个白色像素,然后我把它变成透明,向右移动1个像素,如果它不是白色,那么我就停止了.然后在同一行,我从最左边的像素开始,检查,如果是白色,我把它变成透明,然后向左移动1个像素等等…
然后我向下移动1行并重复整个过程..
这样我就不会删除实际图像中的任何白色像素.
解决方法:
使用getImageData和putImageData非常简单,请注意,图像越大,性能就越显着.您只需要确定当前像素是否为白色,然后将其alpha更改为0.
var canvas = document.getElementById("canvas"),
ctx = canvas.getContext("2d"),
image = document.getElementById("testImage");
canvas.height = canvas.width = 135;
ctx.drawImage(image,0,0);
var imgd = ctx.getImageData(0, 0, 135, 135),
pix = imgd.data,
newColor = {r:0,g:0,b:0, a:0};
for (var i = 0, n = pix.length; i <n; i += 4) {
var r = pix[i],
g = pix[i+1],
b = pix[i+2];
// If its white then change it
if(r == 255 && g == 255 && b == 255){
// Change the white to whatever.
pix[i] = newColor.r;
pix[i+1] = newColor.g;
pix[i+2] = newColor.b;
pix[i+3] = newColor.a;
}
}
ctx.putImageData(imgd, 0, 0);?
还有人问你是否可以使值变得模糊以便检查.它非常简单,只需检查它是否在一定范围内.以下将关闭白色至纯白色透明.
// If its white or close then change it
if(r >=230 && g >= 230 && b >= 230){
// Change the white to whatever.
pix[i] = newColor.r;
pix[i+1] = newColor.g;
pix[i+2] = newColor.b;
pix[i+3] = newColor.a;
}
更多资源
> Pixel manipulation with canvas
> Further info on pixel manipulation with canvas
内容总结
以上是互联网集市为您收集整理的如何在html5和javascript中编辑像素并删除画布图像中的白色背景全部内容,希望文章能够帮你解决如何在html5和javascript中编辑像素并删除画布图像中的白色背景所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。