我有一个Web应用程序,它在web worker中创建一个大图像(30Mo)作为bufferArray。 我想将此图像返回主线程。
通过postMessage方法返回bufferArray非常慢(5次secondes)并冻结UI。
postMessage(data);
所以,我一直在寻找一个压缩图像的库,但我只找到使用HTML5画布的库。 因为禁止HTML5画布是Web Worker,我问你是否有解决这个问题的方法?
我的目标是在Web Worker中花费更多时间并缩短传输时间。
答案 0 :(得分:1)
有些浏览器支持可转移对象,但据我所知,不是全部。
Transferable对象基本上是指从主线程传递给worker和/或back的结构的指针。使用此方法需要对postMessage()
更多内容涵盖here
答案 1 :(得分:0)
如何增加并发Web worker线程池?
以下是两篇很棒的文章,介绍了如何使用它:
http://www.smartjava.org/content/html5-easily-parallelize-jobs-using-web-workers-and-threadpool
答案 2 :(得分:0)
以下是使用postMessage方法的方法:
postMessage(jsonObject, [jsonObject.data.buffer]);
第一个参数与往常一样。 第二个必须是ArrayBuffer的数组。
仍在寻找不使用HTML5画布的图像压缩库。