隐写图片

上传图像

原图

自定义阈值: 4100

隐写后的图像

//yu - 阈值
for (i; i < l; i += 4) {
  if (
    Math.abs(simgData[i + 0] - 29) < yu &&
    Math.abs(simgData[i + 1] - 122) < yu &&
    Math.abs(simgData[i + 2] - 217) < yu
  ) {
    imgData[i + 0] = (imgData[i + 0] / 10 | 0) * 10
  } else if (
    Math.abs(simgData[i + 0] - 255) < yu &&
    Math.abs(simgData[i + 1] - 255) < yu &&
    Math.abs(simgData[i + 2] - 255) < yu
  ) {
    imgData[i + 0] = (imgData[i + 0] / 10 | 0) * 10 + 1
  } else if (
    Math.abs(simgData[i + 0] - 255) < yu &&
    Math.abs(simgData[i + 1] - 111) < yu &&
    Math.abs(simgData[i + 2] - 0) < yu
  ) {
    imgData[i + 0] = (imgData[i + 0] / 10 | 0) * 10 + 2
  } else {
    imgData[i + 0] = (imgData[i + 0] / 10 | 0) * 10 + 3
  }
}

还原

隐写图片

for (i; i < l; i += 4) {
  temp = imgData[i + 0] % 10
  if (temp === 0) {
    simgData[i + 0] = 29
    simgData[i + 1] = 122
    simgData[i + 2] = 217
  } else if (temp === 1) {
    simgData[i + 0] = 255
    simgData[i + 1] = 255
    simgData[i + 2] = 255
  } else if (temp === 2) {
    simgData[i + 0] = 255
    simgData[i + 1] = 111
    simgData[i + 2] = 0
  } else {
    simgData[i + 0] = 29
    simgData[i + 1] = 122
    simgData[i + 2] = 217
  }
  simgData[i + 3] = 255
}