2012-02-03 69 views
0
var imageData = context.getImageData(0, 0, canvas.width, canvas.height); 
var data = imageData.data; 

什么是两个语句之间的区别... context.getImageData()。数据和

var data = context.getImageData(0, 0, canvas.width, canvas.height).data; 

它们都具有不同的效果,为什么呢?

+0

他们呢?什么是不同的效果? – Fosco 2012-02-03 22:34:22

+0

@Fosco view-source:http://jakearchibald.com/scratch/alphavid/ - 第49行和第50行,如果你改变了我提出的问题,你会看到效果......它不再透明 – Nitin 2012-02-03 22:37:22

+0

使代码正常工作,你必须改变更多,只是行49和50 - 代码需要在后面的行中的两个变量,你的版本只声明其中的一个。 – Alnitak 2012-02-03 22:47:37

回答

1

如果你已经改变了按您的评论的代码,即你现在有:

var imageData = context.getImageData(0, 0, canvas.width, canvas.height); 
var data = context.getImageData(0, 0, canvas.width, canvas.height).data; 

那么你的问题是可能,你现在已经得到了图像的像素数据的两个单独的副本,和你正在修改的那个不是那个被复制的那个。

+0

所以,你说#1的情况下,“var数据”的任何更改将反映回来到“var imageData”,但不是在#2的情况下?我尽管你有不同的副本。我无法在任何地方找到.data的文档... – Nitin 2012-02-03 23:20:50

+0

'.getImageData()'返回的值包含多个属性,其中_one_是'.data' - RGBA值的_array like_结构。在最初的情况下,代码获得了该结构的_reference_,而不是新的副本,所以对'data'_do_的更改会影响'imageData'。 – Alnitak 2012-02-03 23:24:03

+0

而在您的代码中(据我所知),您确实已经制作了两个独立的图像数据副本。 – Alnitak 2012-02-03 23:26:30

相关问题