javascript фиксация холста, испорченного в примере MDN - PullRequest
0 голосов
/ 25 марта 2020

Я пробираюсь через Учебное пособие по MDN Canvas .

Работаю хорошо, пока не доберусь до манипуляций с пикселями, пример выбора цвета.

getImageData дает:

MDNTutorialBaseppp. html: 21 Uncaught DOMException: Не удалось выполнить 'getImageData' для 'CanvasRenderingContext2D': холст был испорчен данными из разных источников. на HTMLCanvasElement.pick

Вот код, который я запускаю:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
  </head>
  <body>
    <canvas id="canvas" width="600" height="300"></canvas>
    <script>
      var img = new Image();
      //img.src = 'https://mdn.mozillademos.org/files/5397/rhino.jpg';
      img.src = 'photo2.jpg';
      var canvas = document.getElementById('canvas');
      var ctx = canvas.getContext('2d');
      img.onload = function() {
        ctx.drawImage(img, 0, 0);
        img.style.display = 'none';
      };
      var color = document.getElementById('color');
      function pick(event) {
        var x = event.layerX;
        var y = event.layerY;
        var pixel = ctx.getImageData(x, y, 1, 1);
        var data = pixel.data;
        var rgba = 'rgba(' + data[0] + ', ' + data[1] +
            ', ' + data[2] + ', ' + (data[3] / 255) + ')';
        color.style.background =  rgba;
        color.textContent = rgba;
      }
      canvas.addEventListener('mousemove', pick);
    </script>
  </body>
</html>

Бьется несколько часов в течение нескольких.

Может кто-нибудь заметить ошибку из моих путей.

1 Ответ

0 голосов
/ 28 марта 2020

Комментарии к этому вопросу обеспечивают подход к проработке этой проблемы для конкретного представленного случая. Вам нужно запустить локальный сервер, который легко сделать. Основная проблема - сложная тема c, которую я не претендую на полное понимание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...