suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Lösen Sie das Problem des getImageData()-Fehlers: Die Leinwand ist durch domänenübergreifende Daten kontaminiert

<p>Mein Code läuft einwandfrei auf localhost, aber nicht auf der Website. </p> <p>Ich erhalte diesen Fehler von der Konsole für diese Zeile <code>.getImageData(x,y,1,1).data</code>:</p> <pre class="brush:php;toolbar:false;">Uncaught SecurityError: 'getImageData' konnte nicht auf 'CanvasRenderingContext2D' ausgeführt werden: Die Leinwand wurde durch ursprungsübergreifende Daten beeinträchtigt.</pre> <p>Teil meines Codes:</p> <pre class="brush:php;toolbar:false;">jQuery.Event.prototype.rgb=function(){ var x = this.offsetX ||. (this.pageX - $(this.target).offset().left),y = this.offsetY ||. (this.pageY - $(this.target).offset(). Spitze); if (this.target.nodeName!=="CANVAS")return null; return this.target.getContext('2d').getImageData(x,y,1,1).data; }</pre> <p><strong>Hinweis: </strong>Meine Bild-URL (src) stammt von einer Subdomain-URL</p>
P粉343141633P粉343141633539 Tage vor720

Antworte allen(1)Ich werde antworten

  • P粉465675962

    P粉4656759622023-08-30 09:13:14

    正如其他人所说,您通过从跨源域加载来“污染”画布。

    https://developer.mozilla.org/en-US/docs/ HTML/CORS_Enabled_Image

    但是,您可以通过简单地设置来防止这种情况:

    img.crossOrigin = "Anonymous";

    只有当远程服务器正确设置以下标头时,这才有效:

    Access-Control-Allow-Origin "*"

    使用“直接链接”选项时的 Dropbox 文件选择器这就是一个很好的例子。我在 oddprints.com 上使用它来将远程保管箱图像网址中的图像吸到我的画布中,然后将图像数据提交回我的服务器。全部用 JavaScript 编写

    Antwort
    0
  • StornierenAntwort