คุณจะไม่สามารถวาดภาพจากเซิร์ฟเวอร์อื่นลงในผืนผ้าใบได้โดยตรงจากนั้นใช้ 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 เช่นนี้:
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
แก้ไข -2: ตามความต้องการที่เป็นที่นิยมฉันได้เพิ่มการตรวจสอบเพื่อให้แน่ใจว่าเป็นรูปภาพไม่ใช่สคริปต์ php (จาก: PHP ตรวจสอบว่าไฟล์เป็นรูปภาพหรือไม่ )