是否可以在web worker中使用filereader api来加载图像,即预览/缩略图,从而防止主ui线程阻塞。
像this之类的东西,但是在Web工作者中包装cpu密集部分(主要是读取文件内容和缩放图像)
答案 0 :(得分:4)
从工作者那里无法访问页面的DOM级别,因此您无法创建Image对象或画布(对于缩放部分),因此答案为否,因为您想要操作图像。
虽然可以通过ajax或FileReaderSync
将图像文件加载到Web worker上,然后将其转换为base64数据url字符串并将其发送回主脚本,但是无法操作图像以创建缩略图。 (除非你知道png / jpg / bmp格式的文件规范,并希望硬编码直接在二进制字符串上工作的缩放函数,看起来不是很好吗?)
答案 1 :(得分:2)
主线程称为UI线程,因为与UI直接相关的所有内容都必须在那里发生。您无法在Web Worker中操作DOM,但您可以在Web Worker中操作图像文件的二进制文件。在图像处理之后,您必须将数据传输到主线程并将其附加到DOM。然后浏览器将在主线程中呈现此图像。
答案 2 :(得分:1)
如果可以的话,这是可能的。
需要阅读的内容:Sending Arraybuffer,Transferable Objects
写下整个脚本将超出范围。