2009-12-08 72 views

回答

59

小更新,因爲這個問題是現在半年多歲:

在鉻/鉻6,你現在可以發送一個畫布的圖象 - 反對一個網絡工作者,讓網絡工作者進行更改對象,然後使用putImageData(..)將其寫回畫布。

谷歌的Chromabrush確實是這樣,源代碼可以在這裏找到:

更新:的

最新開發快照Opera(10.70)和Firefox(4.0b1)也支持傳遞ImageDa ta對象到web工作者。

更新2017年:

從GitHub實際鏈接(更容易地找到所需的文件從Chromabrush):

+1

讓我猜IE是不同的? – Lothar 2015-03-25 08:50:20

4

的postMessage的規範是幾個月更新回允許您發佈的ImageData對象,但至今沒有人實施該行爲(我們都到那裏)。 canvas本身的問題在於它是一個DOM元素,因此不適用於工作者(沒有DOM)。

這是最近在whatwg或web-apps郵件列表中提出的,所以我懷疑我們會開始考慮是否可以在工作者中提供CanvasRenderingContext2D-like api。

+0

我的印象中WebWorker下將不允許與DOM進行任何交互,因爲這可能會遇到可能的概率如果多個網絡工作人員正在進行更改,那麼就要付出代價 – 2009-12-08 06:04:42

+3

問題是DOM沒有併發的概念,所以Worker不允許任何共享狀態。與工作人員溝通的唯一方式是使用postMessage,並根據「內部結構化克隆算法」執行克隆,該算法基本上可以認爲是JSON,但是對於一些關鍵類型(File,FileList,ImageData, Blob,Date和RegExp) – olliej 2009-12-08 19:10:16

+3

這個答案已過時。另一個答案現在更好。 – Baxissimo 2011-05-14 01:18:07