Edit: Принимая предложение dennmat их к рассмотрению, мне удалось упростить мой образ приобретения сценария до нескольких линий с использованием Image()
:Могу ли я правильно прочитать двоичные данные через 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. Решение, упомянутое в следующей ссылке, похоже, не относится к этой ситуации. Uncaught Error: SECURITY_ERR: DOM Exception 18 when I try to set a cookie
Является ли функция cors в Image()
поддерживаемой IE9?
У меня возникла небольшая проблема.
выше изображение фактически представляет собой файл, который содержит стандартный заголовок PNG, а затем 255 байт, идущих от 255 до 0 (дважды). Идея состояла в том, чтобы увидеть, как Internet Explorer 9 обрабатывает получение двоичных данных через запрос AJAX.
Итак, вот моя проблема: я заметил, что когда я получаю байт на клиенте, размер которого превышает 127, значение по умолчанию равно 253. Есть ли способ заставить IE читать расширенные байты с правильной значения?
Несколько вещей, чтобы принять к сведению:
1) Мы не используем какое-либо яваскрипт рамки. Это требование, что мы делаем это только с 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();
}
Что не так с 'Image()'? См. Примеры: https://developer.mozilla.org/en/Canvas_tutorial/Using_images – dennmat
Вы, по сути, будете стрелять в ногу, пытаясь манипулировать, управлять и рисовать данные изображения в JS, не используя встроенные браузеры утилиты для него. Это будет очень медленно, и вы, вероятно, столкнетесь с бесчисленными проблемами, особенно после того, как получите прозрачность и поворот. – dennmat
Я, должно быть, пропустил поддержку креста в последний раз, когда посмотрел на Image(). Спасибо за совет! Что касается снятия моей ноги, я не совсем уверен, что вы подразумеваете под встроенными утилитами браузера. Все, что я намереваюсь сделать здесь, - это сделать простой образ на холсте, который можно запустить на сервер. – Axle