【发布时间】:2014-02-25 10:22:19
【问题描述】:
我正在利用以下选定答案中的一些代码:
How to change color of an image using jquery
它工作得很好,但是当我多次运行代码时,似乎新颜色被添加到旧颜色中,所以最终一切都变黑了。我认为我的问题不是真正理解这件作品发生了什么:
for(var I = 0, L = originalPixels.data.length; I < L; I += 4)
{
// If it's not a transparent pixel
if(currentPixels.data[I + 3] > 0)
{
currentPixels.data[I] = originalPixels.data[I] / 255 * newColor.R;
currentPixels.data[I + 1] = originalPixels.data[I + 1] / 255 * newColor.G;
currentPixels.data[I + 2] = originalPixels.data[I + 2] / 255 * newColor.B;
}
}
我知道我正在遍历画布上的所有像素并修改不透明的像素,但是像素数据 / 255 * 新的红色、绿色或蓝色是什么?
【问题讨论】:
-
这看起来像
currentPixels === originalPixels。记住 JavaScript 通过引用获取 Objects;您需要创建一个克隆,并将其存储为originalPixels。
标签: javascript canvas