2012-02-03 108 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

相關問題