【问题标题】:Why is my loop for the getImageData() results not appearing , am I running the loop wrongly? (React)为什么我的 getImageData() 结果循环没有出现,我是否错误地运行了循环? (反应)
【发布时间】:2022-10-14 23:14:59
【问题描述】:

这是代码

 useEffect(() => {
    if (imageUrl && imageUrl !== '') {
      console.log(imageUrl)
      const canvas = canvasRef.current
      canvas.width = 100
      canvas.height = 100

      const context = canvas.getContext('2d')
      const image = new Image()
      image.src = imageUrl
      image.crossOrigin = "Anonymous";
      image.onload = () => {
        context.filter = 'grayscale(1)';
        context.drawImage(image, 0, 0, canvas.width, canvas.height)
        let pixels = context.getImageData(0, 0, canvas.width , canvas.height).data

        let diseasePixels = 0
        
        //Loop over every pixel - pixel with value of 0 to 86 and 125 to 250 will be counted
        for (let i = 0 ; i >= pixels.length -1 ; i++) {
          if(pixels[i] >= 0 && pixels[i] <= 86) {
            diseasePixels += 1
            console.log(pixels[i])
          } else if (pixels[i] >= 125 && pixels[i] <= 250) {
            diseasePixels += 1
          }
        }
        console.log(diseasePixels)
      }
    }
  }, [imageUrl])

我是否以正确的方式运行循环?基本上我想要的是遍历返回的像素数组中的所有值,以计算其中有多少在 0 到 86 和 125 到 250 之间。什么是正确的方法。 console.log diseasePixels 返回 0。

【问题讨论】:

    标签: reactjs canvas


    【解决方案1】:

    您已添加 '>=' 尝试使用 '<='。因为我从 0 开始,因此它对你的条件给出了错误。 谢谢和投票如果它有用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      相关资源
      最近更新 更多