dataURL を取得する前に画像をキャンバスに描画しようとすると、返された情報が不足しているか、埋め込まれているように見える場合があります。多数の「A」文字が含まれています。この問題は、画像をキャンバスにペイントする前に、画像の読み込みが完了するまで待機する必要があるために発生します。これを修正するには、画像要素の読み込みイベント ハンドラーを利用します。
この問題に対処するには、次の手順を実行します:
潜在的な障害は CORS (Cross-Origin Resource Sharing) に関連しています。 context.toDataURL() と context.getImageData がシームレスに動作するには、クロスオリジン互換性のある方法で画像リソースを取得する必要があります。そうしないと、キャンバスが「汚染されている」とマークされ、ピクセル データにアクセスできなくなります。これを回避するには、次のガイドラインに従ってください:
CORS ヘッダーはサーバーから発信されることに注意することが重要です。クロスオリジン属性は、データ取得に CORS を利用する意図を示すだけです。サーバーが正しく構成されていない場合、回避策はありません。
混合ソース (独自のサーバーと CORS 準拠のサーバー) からの画像が関係するまれなケースでは、onerror イベント ハンドラーの使用を検討してください。このハンドラーは、非 CORS サーバーでクロスオリジン属性が「匿名」に設定されている場合にアクティブ化されます。
以上がOnload と CORS に関する CanvasContext2DdrawImage() の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。