संपादित करें:क्या मैं XDomainRequest के माध्यम से ठीक से बाइनरी डेटा पढ़ सकता हूं?
window.onload = function(){
var img;
capture_canvas = document.createElement('canvas');
capture_canvas.width = 1000;
capture_canvas.height = 1000;
document.documentElement.appendChild(capture_canvas);
img = new Image();
img.crossOrigin = "Anonymous";
img.src = "http://www.shangalulu.com/get_resource_no_64.php?url=http://www.shangalulu.com/users/1196739508/post/41-1330377498/41-1330377498_thumb.jpg";
img.onload = function() {
var context, canvas_img;
context = capture_canvas.getContext('2d');
context.drawImage(img, 0, 0, 255, 255);
canvas_img = context.getImageData(0, 0, capture_canvas.width, capture_canvas.height);
}
}
इस Chrome और Firefox के लिए काम करता है, इस IE9 के लिए नहीं करता है: को ध्यान में dennmat के सुझाव ले रहा है, मैं Image()
का उपयोग कर कुछ लाइनें करने के लिए नीचे स्क्रिप्ट प्राप्त मेरी छवि को आसान बनाने में कामयाब रहे। निम्नलिखित लिंक में उल्लिखित समाधान इस स्थिति पर लागू नहीं होता है। Uncaught Error: SECURITY_ERR: DOM Exception 18 when I try to set a cookie
क्या कोर Image()
आईई 9 द्वारा समर्थित है?
मैं एक छोटी सी समस्या में भाग गया है।
ऊपर छवि वास्तव में एक फ़ाइल है कि मानक png हेडर शामिल है, 255 बाइट्स 0 (दो बार) करने के लिए नीचे 255 से जा रहा द्वारा पीछा किया है। विचार यह देखने के लिए था कि कैसे इंटरनेट एक्सप्लोरर 9 ने AJAX अनुरोध के माध्यम से बाइनरी डेटा प्राप्त किया।
तो, यहां मेरी समस्या है: मैंने देखा है कि जब मुझे 127 से अधिक क्लाइंट पर बाइट प्राप्त होता है, तो मान 253 तक डिफ़ॉल्ट हो जाता है। क्या आईई को विस्तारित बाइट्स को सही से पढ़ने के लिए कोई तरीका है मान?
कुछ बातें ध्यान देने के लिए:
1) हम जावास्क्रिप्ट ढांचे किसी भी प्रकार का उपयोग नहीं करते। यह एक आवश्यकता है कि हम केवल नंगे हड्डियों जावास्क्रिप्ट के साथ ऐसा करते हैं।
2) इस प्रयोग का उद्देश्य छवि प्राप्त करने के लिए एक साफ तरीका बनाना है ताकि मैं इसे बिना किसी बगैर कैनवास पर रख सकूं। कभी-कभी ये छवियां हमारे बाहरी रूप से होस्ट किए गए छवि सर्वर से आती हैं, दूसरी बार यह किसी अन्य होस्ट से आती है जिसका हमारा कोई नियंत्रण नहीं होता है।
नीचे संलग्न मेरी परीक्षण स्क्रिप्ट है:
var request;
window.onload = function(){
request = new XMLHttpRequest();
if (window.XDomainRequest) {
request = new XDomainRequest();
}
request.open('GET',
"http://www.shangalulu.com/get_resource_no_64.php?url=
http://www.shangalulu.com/resources/images/sample/sample.png", true);
request.onload = function()
{
var binary, i, response;
response = this.responseText;
binary = "";
if (this.contentType)
{
document.documentElement.appendChild(
document.createTextNode(this.contentType));
document.documentElement.appendChild(document.createElement('br'));
}
for(i=0; i < response.length; i++) {
binary = "Line " + (i) + " --> " + ((response.charCodeAt(i)) & 0xff);
document.documentElement.appendChild(document.createTextNode(binary));
document.documentElement.appendChild(document.createElement('br'));
}
};
request.send();
}
'छवि()' के साथ क्या गलत है? उदाहरणों के लिए देखें: https://developer.mozilla.org/en/Canvas_tutorial/Using_images – dennmat
आप अनिवार्य रूप से अंतर्निहित ब्राउज़र में उपयोग किए बिना जेएस में छवि डेटा में हेरफेर, प्रबंधन और ड्रा करने की कोशिश कर रहे पैर में खुद को शूटिंग करने जा रहे हैं। इसके लिए उपयोगिताओं। यह वास्तव में धीमा होगा और आप अनगिनत मुद्दों का सामना करेंगे, खासकर जब आप पारदर्शिता और घूर्णन में आ जाएंगे। – dennmat
मैंने छवि() पर पिछली बार क्रॉस मूल समर्थन को याद किया होगा। पारितोषिक के लिए धन्यवाद! मेरे पैर को बंद करने के लिए, मैं पूरी तरह से निश्चित नहीं हूं कि ब्राउज़र अंतर्निर्मित उपयोगिताओं का क्या मतलब है। मैं बस इतना करना चाहता हूं कि एक कैनवास पर एक साधारण छवि प्रस्तुत करें जिसे सर्वर पर निकाल दिया जा सके। – Axle