2016-12-09 2 views
1

Можно ли использовать элемент холста внутри веб-рабочего? Я хочу сделать canvas.toBlob внутри веб-рабочего, чтобы уменьшить качество изображения..
Использование холста в веб-рабочем

  • Я знаю только ImageData может быть передан на Web Worker, что не помогает, мне нужно холст, а не canvasContext сделать canvas.toBlob
  • Я знаю об экспериментальном закадровым холсте в Firefox, я тоже хочу поддержку в других браузерах.

Возможно, как-то через https://github.com/substack/webworkify webworkify? Что позволяет требовать других библиотек внутри веб-рабочего?

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

+0

попробовать OffscreenCanvas https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas – defghi1977

+1

спасибо, но обратите внимание на второй пункт, указанный с точкой впереди в моем вопросе – bergben

+0

В настоящее время нет перекрестного браузера, чтобы получить веб-рабочего manulateulate DOM – Viney

ответ

0

Использование OffscreenCanvas:

OffscreenCanvas объекты используются для создания рендеринга контекстов, очень как HTMLCanvasElement, но без подключения к DOM. Это позволяет использовать контексты рендеринга в рабочих группах.

Объект OffscreenCanvas может содержать слабую ссылку на элемент холста-заполнителя, который обычно находится в DOM, встроенное содержимое которого обеспечивается объектом OffscreenCanvas. Растровое изображение объекта OffscreenCanvas помещается в элемент холста холста, вызывая метод commit() контекста рендеринга объекта OffscreenCanvas. Все типы контекста вывода, которые могут быть созданы объектом OffscreenCanvas, должны реализовать метод commit(). Точное поведение метода фиксации (например, копирование или передача растровых изображений) может быть различным, как определено соответствующими спецификациями контекста рендеринга. В этой спецификации определяется только 2D-контекст для экранированных холстов.

Это экспериментальная функция, поэтому она скрыта за флагом. Поддерживается Firefox:

Эта функция находится за настройкой функции. Пример: config, установите gfx.offscreencanvas.enabled в true.

И Chrome:

Эта функция находится за флагом. В хроме: // флаги позволяют при экспериментальном полотне нажмите особенности

Для случаев использования работником, не существует зависимость от DOM:

веб-работники не являются DOM-зависимыми. Они обрабатывают чистые данные, что делает их особенно подходящими для кода JavaScript, для выполнения которого требуется много времени.

Только Firefox поддерживает манипуляции с ImageData.

Canvas Web Worker Support

Список литературы

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