使用颜色查找图更快地预处理 ImageData 和绘制画布

问题描述

我有一个用例,其中画布是用某些不同颜色的部分绘制的,并且根据用户输入,需要使用新的 ImageData 再次重新绘制画布。 对于每一种不同的颜色,我们都有一个对应的 newColor 应该替换它,所有这些信息都是使用以下结构中的预处理映射给出的。 {'#ff0000':'#aa8499','#ee00ff':'#00ff00'} 这意味着颜色为 #ff0000 的段需要替换为 #aa8499 等等。 目前,我遍历整个图像像素到像素,检查当前像素颜色,使用查找图找到更新的颜色并使用新值创建另一个 imagedata 对象,然后在 putimageData 中使用它。 这种计算新图像数据并将其绘制在原始画布中的 2 路过程需要大量时间,并且需要快速。有什么方法可以使用不同段的给定事实来加快过程。

当前代码供参考

const data = imageData.data
const tempImageData = this.context.createImageData(image.width,image.height)
for (let i = 0; i < data.length; i += 4) {
    // find updated color
    tempImageData.data[i] = updatedColor[0] 
    tempImageData.data[i + 1] = updatedColor[1] 
    tempImageData.data[i + 2] = updatedColor[2] 
    tempImageData.data[i + 3] = updatedColor[3]
}
ctx.putimageData(tempImageData,0)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)