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