概述将图像处理搬到 Worker 可避免阻塞主线程。本文示例使用 OffscreenCanvas 与 OPFS 完成批处理与持久化。能力检测与主线程入口const supportsOC = typeof OffscreenCanvas === 'function'; function startImageWorker(files) { if (!supportsOC) throw new Error('OffscreenCanvas unsupported'); const worker = new Worker('img-worker.js'); worker.postMessage({ type: 'process', files }); } Worker 端处理与写入 OPFS(img-worker.js)self.onmessage = async e => { if (e.data.type === 'process') { for (const file of e.data.files) { const bmp = await createImageBitmap(file); const canvas = new OffscreenCanvas(512, 512); const ctx = canvas.getContext('2d'); ctx.drawImage(bmp, 0, 0, 512, 512); const blob = await canvas.convertToBlob({ type: 'image/jpeg', quality: 0.8 }); const root = await navigator.storage.getDirectory(); const fh = await root.getFileHandle(`thumbs/${file.name}.jpg`, { create: true }); const w = await fh.createWritable(); await w.write(await blob.arrayBuffer()); await w.close(); } } };

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
2.111833s