आप एक कैनवास में सीधे दूसरे सर्वर से चित्र नहीं बना पाएंगे और फिर उपयोग कर पाएंगे 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 स्क्रिप्ट का उपयोग करेंगे:
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
उसके बाद कैनवास पर उपयोग करते हैं, तो यह ठीक काम करेगा।
वैकल्पिक रूप से, यदि आप पूरी छवि को सहेजना नहीं चाहते हैं, तो आप अपनी PHP स्क्रिप्ट में x & y निर्देशांक पास कर सकते हैं और उस तरफ पिक्सेल के आरजीबीए मूल्य की गणना कर सकते हैं। मुझे लगता है कि PHP में उस तरह की इमेज प्रोसेसिंग करने के लिए अच्छी लाइब्रेरी हैं।
यदि आप इस दृष्टिकोण का उपयोग करना चाहते हैं, तो मुझे बताएं कि क्या आपको इसे लागू करने में सहायता की आवश्यकता है।
edit-1: peeps ने बताया कि php स्क्रिप्ट उजागर है और इंटरनेट को संभावित रूप से दुर्भावनापूर्ण रूप से उपयोग करने की अनुमति देता है। इसे संभालने के लिए एक लाख तरीके हैं, जिनमें से एक सबसे सरल URL ऑब्फ़्सकेशन के कुछ प्रकार है ... मैं रेकॉर्ड सुरक्षित php प्रथाओं एक अलग गूगल के लायक है? पी
संपादन -2: लोकप्रिय मांग के अनुसार, मैंने यह सुनिश्चित करने के लिए एक चेक जोड़ा है कि यह एक छवि है और php स्क्रिप्ट नहीं (से: PHP चेक अगर फ़ाइल एक छवि है )।