문제 제시:
캔버스 페인팅의 무모한 시작 , 당신은 당황스러운 수수께끼에 직면하게 됩니다. drawImage()를 통해 렌더링된 이미지는 파악하기 어렵고 빈 데이터 URL이 남습니다. 더욱이 캔버스를 표시하려고 시도해도 눈에 띄는 결과가 나오지 않으며 콘솔은 무시무시하게 조용합니다.
당황의 폭로:
문제의 핵심은 시기상조에 있습니다. 캔버스 예술성의 본질. drawImage()가 마법을 휘두르려면 먼저 이미지 로드 프로세스를 완료해야 합니다. 이러한 onLoad 필요성을 달래려면 다음 전략을 수용하십시오.
// Create the image var img = new Image(); // Define the onload function img.onload = function() { // Canvas setup var canvas = document.createElement("canvas"); canvas.width = img.width; canvas.height = img.height; var context = canvas.getContext("2d"); // Draw the image context.drawImage(img, 0, 0); // Obtain the data URL var dataURL = canvas.toDataURL(); // Perform desired actions with dataURL doSomething(dataURL); }; // Set the image source img.src = "http://somerandomWebsite/picture.png";
CORS 수수께끼 및 완화:
원활한 toDataURL() 및 getImageData() 실행을 보장하려면 CORS(교차 원본 리소스 공유)가 필수적입니다. 다음 시나리오 중 하나를 보장하여 캔버스 '오염'을 방지합니다.
중요 사항:
특이한 경우: 이미지 소스의 불일치:
이미지가 동일한 서버와 CORS 호환 소스의 혼합에서 나온 경우 활용을 고려하세요. onerror 이벤트 핸들러. CORS가 아닌 서버에 교차 출처를 '익명'으로 할당하고 오류를 수신합니다.
function corsError() { this.crossOrigin = ""; this.src = ""; this.removeEventListener("error", corsError, false); } img.addEventListener("error", corsError, false);
위 내용은 내 Canvas drawImage()가 이미지를 렌더링하지 못하는 이유는 무엇이며 온로드 및 CORS 문제를 해결하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!