다른 서버에서 직접 캔버스로 이미지를 그린 다음을 사용할 수 없습니다 getImageData
. 보안 문제이며 캔버스는 "오염 된"것으로 간주됩니다.
PHP를 사용하여 이미지 사본을 서버에 저장 한 다음 새 이미지를로드하는 것이 효과가 있습니까? 예를 들어, URL을 PHP 스크립트로 전송하여 서버에 저장 한 후 다음과 같이 새 파일 이름을 자바 스크립트로 반환 할 수 있습니다.
<?php //The name of this file in this example is imgdata.php
$url=$_GET['url'];
// prevent hackers from uploading PHP scripts and pwning your system
if(!@is_array(getimagesize($url))){
echo "path/to/placeholderImage.png";
exit("wrong file type.");
}
$img = file_get_contents($url);
$fn = substr(strrchr($url, "/"), 1);
file_put_contents($fn,$img);
echo $fn;
?>
PHP 스크립트를 다음과 같은 ajax javascript와 함께 사용하십시오.
xi=new XMLHttpRequest();
xi.open("GET","imgdata.php?url="+yourImageURL,true);
xi.send();
xi.onreadystatechange=function() {
if(xi.readyState==4 && xi.status==200) {
img=new Image;
img.onload=function(){
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
}
img.src=xi.responseText;
}
}
getImageData
그 후에 캔버스에서 사용 하면 제대로 작동합니다.
또는 전체 이미지를 저장하지 않으려면 x & y 좌표를 PHP 스크립트에 전달하고 해당면의 픽셀 rgba 값을 계산할 수 있습니다. PHP에서 이러한 종류의 이미지 처리를 수행하기위한 좋은 라이브러리가 있다고 생각합니다.
이 방법을 사용하려면 구현에 도움이 필요하면 알려주십시오.
편집-1 : PHP 스크립트가 노출되어 인터넷에서 악의적으로 잠재적으로 사용할 수 있다고 지적했습니다. 이것을 처리하는 백만 가지 방법이 있습니다. 가장 단순한 URL 난독 화 중 하나입니다 ... 보안 PHP 사례는 별도의 Google 자격이 있습니다 .P
편집-2 : 대중의 요구에 따라 PHP 스크립트가 아닌 이미지인지 확인하기 위해 검사를 추가했습니다 (보낸 사람 : 파일이 이미지 인 경우 PHP 확인 ).