Javascript Canvas getImageData对象如何从自变量进行操作
我正在学习画布操作教程来更改每个像素的颜色,我遇到了以下代码(也写在下面):Javascript Canvas getImageData对象如何从自变量进行操作,javascript,jquery,html,canvas,Javascript,Jquery,Html,Canvas,我正在学习画布操作教程来更改每个像素的颜色,我遇到了以下代码(也写在下面): 最终的context.putImageData如何与iD对象(我们没有触摸它,我们只操作了dA数组)配合良好 var iD=context.getImageData(imgX、imgY、img.width、img.height); var dA=iD.data;//阵列中的原始像素数据 var brightnessMul=1.35;//亮度倍增器 对于(变量i=0;i
最终的
context.putImageData
如何与iD
对象(我们没有触摸它,我们只操作了dA
数组)配合良好
var iD=context.getImageData(imgX、imgY、img.width、img.height);
var dA=iD.data;//阵列中的原始像素数据
var brightnessMul=1.35;//亮度倍增器
对于(变量i=0;i
我已经检查过了,代码运行良好,但是
dA
中的更改如何自动更改iD
(我希望iD
和dA
是自变量)?没有data
是imageData
对象的一个属性,因此它们是内在连接的。完全离题了,但你是高尔夫球手吗如果是,那就是你事业的支柱!iD.data可能是引用类型,而不是基元类型。看看这个例子(),你会发现其中的区别。是的,当你把一个变量绑定到一个对象的属性时,你是在创建一个对该属性的引用,而不是创建一个单独的副本。对dA
所做的任何操作实际上都会直接影响它指向的iD.data
对象hanks@markE、valenz和jmcgriz。我的假设是错误的!
var iD = context.getImageData(imgX, imgY, img.width, img.height);
var dA = iD.data; // raw pixel data in array
var brightnessMul = 1.35; // brightness multiplier
for(var i = 0; i < dA.length; i += 4)
{
var red = dA[i]; // Extract original red color [0 to 255]
var green = dA[i + 1]; // Extract green
var blue = dA[i + 2]; // Extract blue
brightenedRed = brightnessMul * red;
brightenedGreen = brightnessMul * green;
brightenedBlue = brightnessMul * blue;
/**
*
* Remember, you should make sure the values brightenedRed,
* brightenedGreen, and brightenedBlue are between
* 0 and 255. You can do this by using
* Math.max(0, Math.min(255, brightenedRed))
*
*/
dA[i] = brightenedRed;
dA[i + 1] = brightenedGreen;
dA[i + 2] = brightenedBlue;
}
context.putImageData(iD, imgX, imgY);