Görüntüleri doğrudan başka bir sunucudan bir tuvale çizip sonra kullanamazsınız getImageData
. Bu bir güvenlik sorunu ve tuval "kirli" olarak kabul edilecek.
Görüntünün bir kopyasını PHP kullanarak sunucunuza kaydetmeniz ve ardından yeni görüntüyü yüklemeniz işe yarar mı? Örneğin, URL'yi PHP betiğine gönderebilir ve sunucunuza kaydedebilir, ardından yeni dosya adını şu şekilde javascript'inize döndürebilirsiniz:
<?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 betiğini aşağıdaki gibi bir ajax javascript ile kullanırsınız:
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;
}
}
Bundan getImageData
sonra tuval üzerinde kullanırsanız , iyi çalışır.
Alternatif olarak, görüntünün tamamını kaydetmek istemiyorsanız, x & y koordinatlarını PHP betiğinize aktarabilir ve pikselin o taraftaki rgba değerini hesaplayabilirsiniz. PHP'de bu tür görüntü işlemeyi yapmak için iyi kitaplıklar olduğunu düşünüyorum.
Bu yaklaşımı kullanmak istiyorsanız, uygulama konusunda yardıma ihtiyacınız olursa bana bildirin.
edit-1: peeps php betiğinin açığa çıktığını ve internetin potansiyel olarak kötü niyetli kullanmasına izin verdiğini belirtti. bunun üstesinden gelmenin milyonlarca yolu var, en basitlerinden biri bir çeşit URL gizlemedir ... güvenli php uygulamalarının ayrı bir google'ı hak ettiğini düşünüyorum; P
edit-2: popüler talep üzerine, bir php betiği değil de bir resim olduğundan emin olmak için bir kontrol ekledim (kaynak: PHP, dosyanın bir resim olup olmadığını kontrol et ).