Рендеринг RGBA в PNG в чистом JavaScript?

Допустим, у меня есть элемент canvas, и мне нужно преобразовать изображение на холсте в формат PNG или JPEG. Конечно, я могу просто использовать canvas.toDataURL, но проблема в том, что мне нужно делать это двадцать раз в секунду, а canvas.toDataURLочень медленно --настолько медленным, что процесс захвата пропускает кадры, потому что браузер занят преобразованием в PNG.

Моя идея состоит в том, чтобы вызвать context.getImageData(...), что, очевидно, намного быстрее, и отправить возвращенный CanvasPixelArrayв Web Worker, который затем обработает необработанные данные изображения в PNG или JPEG. Проблема в том, что я не могу получить доступ к нативному canvas.toDataURLиз Web Worker, поэтому вместо этого мне придется прибегнуть к чистому JavaScript. Я пробовал искать библиотеки, предназначенные для Node.js, но эти написаны на C++. Существуют ли какие-либо библиотеки на чистом JavaScript, которые будут отображать необработанные данные изображения в PNG или JPEG?

15
задан Casey Chu 20 August 2012 в 09:41
поделиться