检查画布像素是否具有给定的颜色
check if canvas pixel is of a given color
画布有一个CSS background-color: #D3D3D3;
和一个属性ctx.fillStyle = "#000";
。
这段JS代码需要保持笔画完整,并使其他所有东西都透明的背景。如何才能做到这一点?
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height).data;
let clearBack = imageData;
for (var i = 3; i < clearBack.length; i += 4) {
if (pixle is not black) { //if pixel belongs to the stroke leave it
clearBack[i] = 0;
}
}
你很接近了。您可以遍历每4个像素(红绿蓝alpha),并使用imageData检查每种颜色。然后,如果它不是黑色的,你想怎么处理它就怎么处理。
你可以使用putImageData
重写任何修改像素回屏幕。不过,请确保在imageData
变量中保留原始的ImageData
对象。
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); //take away the .data
var r, g, b, a;
for(var i = 0; i+3 < imageData.data.length; i+=4) {
r = imageData.data[i];
g = imageData.data[i+1];
b = imageData.data[i+2];
a = imageData.data[i+3];
if((r > 0 || g > 0 || b > 0) && a > 0) { // if pixel is not black, and not transparent
imageData.data[i+3] = 0; //set alpha to 0
}
}
ctx.putImageData(imageData, 0, 0); //put the imageData back to the screen
这里有一把小提琴。我在这里做了一些稍微不同的事情,但是你明白了。
https://jsfiddle.net/q0n5sxku/相关文章:
- 如何更改文本区域的颜色's文本,具体取决于它是否为占位符
- 如何检查十六进制颜色是否为“”;太黑”;
- 是否可以根据FullCalendar事件的标题指定其背景颜色
- 是否可以添加图像作为徽标颜色框
- 根据是否选择了文件来更改文件上传时的边框颜色
- 查看整个画布是否被涂成一种颜色的方法.Javascript + processing.js
- 是否可以使用 css 和 javascript 将颜色从深色变成浅色
- 当 y 轴反转时是否可以保持填充颜色
- 如何找出某些内容是否是HTML颜色名称之一,而无需检查每个颜色名称
- 如何检查某个类是否有背景颜色,如果有,请更改背景颜色
- 是否可以在每次单击按钮时更改背景颜色并恢复为纯JavaScript中的原始颜色
- 是否可以禁用颜色框图像上的单击侦听器
- 是否可以替换输入字段中每个字符的颜色
- 使用jquery检查两种颜色是否接触
- js饼图背景颜色:是否有任何方法可以随机生成它们
- 用javascript检测颜色是否介于两种颜色之间
- 如何在纯JavaScript中检查元素的颜色是否与其背景颜色相等(在渲染之后)
- 如何判断一个像素的颜色是否为红色?与jquery()
- 如何使用JS/jQuery检查两种颜色是否相同
- 如何检查CSS背景颜色是否为白色