在纯JavaScript中渲染RGBA到PNG?

假设我有一个画布元素,我需要将画布上的图像转换为PNG或JPEG.当然,我可以简单地使用canvas.toDataURL,但是问题是我需要做一次这样做一秒钟,而canvas.toDataURL是extremely slow – 这么慢,捕获进程错过了帧,因为浏览器正忙于转换为PNG.

我的想法是调用context.getImageData(…),这显然要快得多,并将返回的CanvasPixelArray发送到Web Worker,然后将其处理原始图像数据为PNG或JPEG.问题是我无法从Web Worker内部访问本机canvas.toDataURL,所以我需要使用纯粹的JavaScript.我尝试搜索用于Node.js的库,但是those是用C编写的.是否有纯JavaScript的图书馆将原始图像数据呈现为PNG或JPEG?

已经有几个libpng的JavaScript端口,包括pnglets(很旧),data:demoPNGlib.

PNG spec本身是非常简单的 – 您可能遇到的最困难的部分是自己实现一个简单的PNG编码器正在获得ZLIB(其中还有许多独立的JavaScript实现).

翻译自:https://stackoverflow.com/questions/12035209/render-rgba-to-png-in-pure-javascript

转载注明原文:在纯JavaScript中渲染RGBA到PNG?