2009-12-08 2 views

ответ

59

Небольшое обновление, так как этот вопрос в настоящее время более чем половина года:

В Chrome/Хром 6 Теперь вы можете отправить холст ImageData объект на веб-работника, пусть веб-работника внести изменения в объект, а затем записать его обратно на холст, используя putImageData (..).

Google, Chromabrush делает это таким образом, исходный код можно найти здесь:

Update:

Последние снимки развития Opera (10.70) и Firefox (4.0b1) также поддерживают передачу ImageDa ta объектов веб-работнику.

Update 2017:

Актуальные ссылки с Github (легче найти нужные файлы из Chromabrush):

+1

Позвольте мне угадать, что IE отличается? – Lothar

4

No.

PostMessage спецификация была обновлена ​​несколько месяцев назад, чтобы размещать объекты ImageData, но пока еще никто не реализовал это поведение (все мы попасть туда). Проблема с самим холстом заключается в том, что он является элементом DOM и поэтому не работает в рабочем месте (DOM отсутствует).

Это было поднято недавно либо в списках рассылки whatwg, либо в веб-приложениях, поэтому я подозреваю, что мы начнем смотреть, можно ли предоставить работникам CanvasRenderingContext2D-like api.

+0

Я был под впечатлением WebWorker не позволяло бы взаимодействовать с DOM, поскольку это могло бы привести к возможной проблеме лемы, если несколько веб-мастеров вносят изменения. –

+3

Проблема в том, что DOM не имеет понятия параллелизма, поэтому рабочие не разрешают какое-либо общее состояние. Единственный способ общения с работником - это postMessage, и он выполняет клон в соответствии с «внутренним структурированным алгоритмом клонирования», который в основном можно рассматривать как JSON, но с дополнительной поддержкой нескольких типов ключей (File, FileList, ImageData, Blob, Date и RegExp) – olliej

+3

Этот ответ устарел. Другой ответ теперь лучше. – Baxissimo

Смежные вопросы