拷贝一个imageData, 避免多次向worker中发送数据导致的异常

本文探讨了在将ImageData发送给Worker时遇到的DOMException,原因在于数据缓冲已被转移。为避免这个问题,提出了一种解决方案:创建ImageData的副本,确保每次发送稳定的数据。通过cloneImageData函数实现这一操作,适用于频繁数据交互场景。
摘要由CSDN通过智能技术生成

原文链接: 拷贝一个imageData, 避免多次向worker中发送数据导致的异常

上一篇: 使用iframe和vconsole调试ios网页

下一篇: putImageData 绘制矩形图片

将一个imageData发送到worker后, 再次发送会报异常

DOMException: Failed to execute 'postMessage' on 'Worker': ArrayBuffer at index 0 is already detached.

主要原因是, 发送后buffer被转移了, 所以导致数据为空, 也就是postMessage后的imageData里面buffer为空

up-2c0801b0fc2c2b99dbc10fddd8d04bfe8cd.png

每次发送之前clone一份, 除非是一次性的就不需要了

export const cloneImageData = (imageData) => {
  // create a Uint8ClampedArray copy of imageData.data
  const copyOfData = Uint8ClampedArray.from(imageData.data);
  return new ImageData(copyOfData, imageData.width, imageData.height);
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值