Ви не зможете малювати зображення безпосередньо з іншого сервера на полотні, а потім використовувати getImageData
. Це питання безпеки, і полотно буде вважатися "заплямованим".
Чи вдасться вам зберегти копію зображення на сервері за допомогою PHP, а потім просто завантажити нове зображення? Наприклад, ви можете надіслати URL у скрипт PHP і зберегти його на своєму сервері, а потім повернути нове ім'я файлу у ваш javascript таким чином:
<?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.
Якщо ви хочете скористатися цим підходом, повідомте мене, чи потрібна вам допомога в його здійсненні.
edit-1: peeps вказує на те, що скрипт php відкритий і дозволяє Інтернету потенційно його використовувати зловмисно. Є мільйон способів впоратися з цим, один з найпростіших - це якась обтурація URL-адрес ... я вважаю, що безпечні практики PHP заслуговують на окремий google; P
edit-2: на вимогу населення, я додав чек, щоб переконатися, що це зображення, а не php-скрипт (від: перевірка PHP чи файл є зображенням ).