Редактировать: принимая во внимание предложение dennmat, мне удалось упростить сценарий получения изображений до нескольких строк, используя Image()
:
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.Решение, упомянутое в следующей ссылке, похоже, не относится к этой ситуации. Uncaught Error: SECURITY_ERR: DOM Exception 18, когда я пытаюсь установить cookie
Поддерживается ли функция cors в Image()
поддерживаемой IE9?
I 'Мы столкнулись с крошечной проблемой.
http://www.shangalulu.com/get_resource_no_64.php?url=http://www.shangalulu.com/resources/images/sample/sample.png
Это изображение на самом деле представляет собой файл, содержащий стандартный заголовок png, за которым следуют 255 байтов, идущих от 255 до 0 (дважды).,Идея состояла в том, чтобы посмотреть, как Internet Explorer 9 обрабатывает получение двоичных данных через запрос AJAX.
Итак, вот моя проблема: я заметил, что когда я получаю на клиенте байт, который больше 127, значениепо умолчанию 253. Есть ли способ заставить IE читать расширенные байты с правильными значениями?
Несколько вещей, на которые следует обратить внимание:
1) Мы не используем никакой сортировкирамок JavaScript.Требуется, чтобы мы делали это только с помощью javascript с голыми костями.
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();
}