Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用纯JavaScript将RGBA呈现为PNG?_Javascript_Canvas_Html5 Canvas_Web Worker - Fatal编程技术网

用纯JavaScript将RGBA呈现为PNG?

用纯JavaScript将RGBA呈现为PNG?,javascript,canvas,html5-canvas,web-worker,Javascript,Canvas,Html5 Canvas,Web Worker,假设我有一个canvas元素,我需要将画布上的图像转换为PNG或JPEG。当然,我可以简单地使用canvas.toDataURL,但问题是我需要每秒执行二十次,而且canvas.toDataURL太慢,以至于捕获过程会错过帧,因为浏览器正忙于转换为PNG 我的想法是调用context.getImageData(…),这显然要快得多,然后将返回的CanvasPixelArray发送给Web工作者,然后由Web工作者将原始图像数据处理成PNG或JPEG格式。问题是我无法从Web Worker中访问本

假设我有一个
canvas
元素,我需要将画布上的图像转换为PNG或JPEG。当然,我可以简单地使用
canvas.toDataURL
,但问题是我需要每秒执行二十次,而且
canvas.toDataURL
太慢,以至于捕获过程会错过帧,因为浏览器正忙于转换为PNG


我的想法是调用
context.getImageData(…)
,这显然要快得多,然后将返回的
CanvasPixelArray
发送给Web工作者,然后由Web工作者将原始图像数据处理成PNG或JPEG格式。问题是我无法从Web Worker中访问本机的canvas.toDataURL,因此我需要使用纯JavaScript。我试着寻找Node.js的库,但是用C++编写。在纯JavaScript中是否有任何库将原始图像数据转换成PNG或JPEG?

< P>,实际上有一个C++到JavaScript编译器调用。
有人做了一个,你可能想检查一下。

libpng有几个JavaScript端口,包括(非常旧的)和


它本身非常简单–您可能遇到的最困难的部分是自己实现一个简单的PNG编码器是否正确(也有许多独立的JavaScript实现)。

我能够编写自己的PNG编码器,它支持RGB和调色板,具体取决于有多少种颜色。它打算作为Web工作者运行。我已将其开源为。

因此它无法运行服务器端?@madflow需要将所有数据发送到服务器,而且由于数据量很大(每秒20帧,持续几分钟),这并不理想。好的。如果您必须回退到服务器解决方案,那么还有phantomjs(),它是为类似这样的任务设计的(据我所知)。抱歉-据我所知,没有纯Javascript解决方案。将原始像素数据发送到服务器并将其转换为您需要的任何类型的图像不是更容易吗?如果toDataURL很慢,我想用纯JS将东西转换成PNG会更慢…@GGG但关键是使用Web Workers,用户不会遇到这种慢。我曾尝试将它与nodejs(服务器端)一起使用,但速度非常慢。。。。我已在此处发布我的问题:。你有什么办法可以帮上忙吗?谢谢。