2014-01-19 27 views
0

我想從畫布獲取像素數據。已經有一個使用KineticJS庫構建的現有和正在運行的動畫。我現在要做的就是獲取特定方塊中某些像素的rgb值。從畫布獲取像素數據與KineticJS

通過使用:

console.log(document.getElementsByTagName('canvas')); 

我已經計算出,存在由KineticJS產生2個畫布。我試圖把工作用下面的代碼完成:

var canvas = document.getElementsByTagName('canvas')[0]; 
var context = canvas.getContext("2d");   
var imageData = context.getImageData(20, 20, 10, 10); 

然而,這引起了一個錯誤:遺漏的類型錯誤:無法調用未定義的方法「的getContext」(我試過兩個[0]和[1] )。這裏的原因是,document.getElementsByTagName('canvas')應該給我一個Node-List,我認爲我能夠獲得一個畫布對象。

使用上面提到的console.log()我已經看到有兩個畫布對象,但我無法獲取其中任何一個的上下文。

有沒有人有關如何讓這3行代碼工作的提示?

回答

0

在動力學初始化之前可能會這樣做嗎?看起來你canvas具有長度等於0

這個例子正常工作:http://jsfiddle.net/lavrton/ft8M7/3/

+0

另外,如果有在舞臺上超過1層,你可以使用得到真正的背景下特定層(有用這種方法):var realContext = layer.getContext()._ context; – markE

+0

Hello lavrton&MarkE。 它的工作!問題的確在於當層還沒有添加到舞臺上時我插入了代碼。這些圖層被添加到imageObj.onload函數的舞臺上(我加載背景圖片)...感謝您的幫助! – Pnpako