2009-12-08 10 views

Odpowiedz

59

Mała zmiana, a pytanie jest teraz więcej niż pół roku stare:

W Chrome/Chromium 6 można teraz wysłać płótno imageData sprzeciw wobec pracownika internetowej, niech robotnik internetowej wprowadzić zmiany do obiekt, a następnie zapisz go z powrotem na płótnie przy użyciu putImageData (..). Chromabrush robi to w ten sposób, kod źródłowy można znaleźć

Google tutaj:

Aktualizacja:

Najnowsze zrzuty rozwojowe Opera (10.70) i ​​Firefox (4.0b1) obsługują również przekazywanie ImageDa ta oznacza obiekt WWW.

Aktualizacja 2017:

Rzeczywiste linki z Github (łatwiej znaleźć potrzebnych plików z Chromabrush):

+1

Niech zgadnę, że IE jest inny? – Lothar

4

nr

postMessage specyfikacja została zaktualizowana kilka miesięcy wstecz, co pozwala zakładać obiekty imageData ale jak dotąd nikt nie wdrożył tego zachowania (wszyscy jesteśmy coraz tam). Problem z samym płótnem polega na tym, że jest elementem DOM i dlatego nie działa w robotach (nie ma DOM).

Zostało to ostatnio zgłoszone na listach dyskusyjnych whatwg lub web-apps, więc podejrzewam, że zaczniemy sprawdzać, czy możliwe jest udostępnienie interfejsu API CanvasRenderingContext2D w robotach.

+0

byłem pod wrażenie, WebWorker nie pozwoliłoby na interakcję z DOM, ponieważ mogłoby to doprowadzić do możliwego błędu lems, jeśli wielu webworkerów dokonuje zmian. –

+3

Problem polega na tym, że DOM nie ma koncepcji współbieżności, więc pracownicy nie dopuszczają żadnego współdzielonego stanu. Jedynym sposobem komunikowania się z robotnikiem jest postMessage, który wykonuje klon zgodnie z "wewnętrznym algorytmem klonowania strukturalnego", który można zasadniczo uznać za JSON, ale z dodatkowym wsparciem dla kilku kluczowych typów (File, FileList, ImageData, Blob, Data i RegExp) – olliej

+3

Ta odpowiedź jest nieaktualna. Druga odpowiedź jest teraz lepsza. – Baxissimo