Heim >Web-Frontend >js-Tutorial >Wie löse ich CanvasContext2D drawImage()-Probleme mit Onload und CORS?
Beim Versuch, ein Bild auf eine Leinwand zu zeichnen, bevor seine Daten-URL abgerufen wurde, erscheinen die zurückgegebenen Informationen möglicherweise mangelhaft und gefüllt mit zahlreichen „A“-Zeichen. Dieses Problem entsteht dadurch, dass man warten muss, bis das Bild vollständig geladen ist, bevor es auf die Leinwand gemalt werden kann. Um dies zu beheben, verwenden Sie den Load-Event-Handler für das Bildelement.
Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:
Ein potenzielles Hindernis hängt mit CORS (Cross-Origin Resource Sharing) zusammen. Damit context.toDataURL() und context.getImageData nahtlos funktionieren, muss die Bildressource auf ursprungsübergreifende kompatible Weise abgerufen werden. Andernfalls wird die Leinwand als „beschädigt“ markiert, wodurch der Zugriff auf Pixeldaten verhindert wird. Um dies zu umgehen, befolgen Sie die folgenden Richtlinien:
Es ist wichtig zu beachten, dass CORS-Header vom Server stammen. Das Cross-Origin-Attribut zeigt lediglich Ihre Absicht an, CORS für den Datenabruf zu nutzen. Wenn der Server nicht richtig konfiguriert ist, gibt es keine Problemumgehung.
In seltenen Fällen, in denen es um Bilder aus gemischten Quellen (eigener Server und CORS-kompatible Server) geht, sollten Sie den Einsatz des onerror-Ereignishandlers in Betracht ziehen. Dieser Handler wird aktiviert, wenn das Cross-Origin-Attribut auf einem Nicht-CORS-Server auf „anonym“ gesetzt ist.
Das obige ist der detaillierte Inhalt vonWie löse ich CanvasContext2D drawImage()-Probleme mit Onload und CORS?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!