Я создаю программу просмотра изображений, которая должна отображать изображения большого размера (5-10 МБ) после загрузки с сервера.У меня есть требование, чтобы это изображение также можно было использовать где-то еще.
Я попытался загрузить изображение и преобразовать его в BLOB-объект и отобразить изображение из URL-адреса BLOB-объекта, чтобы его не нужно было загружать снова.с сервера при необходимости.Ниже приведена сводная информация о том, что я сделал до сих пор:
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var urlCreator = window.URL || window.webkitURL;
var url = urlCreator.createObjectURL(this.response), domImg = document.getElementById('#sample');
domImg.onload = function () {
domImg.onload = null;
//do the rest
}
domImg.onerror = domImgError;
domImg.src = url;
domImg.crossOrigin = "Anonymous";
domImg.style.width = "100%";
domImg.style.display = "none";
};
//On image url loading fail
xhr.onerror = xhr.onabort = domImgError;
xhr.open('get', imgUrl);
xhr.responseType = 'blob';
xhr.send();
Используя вышеуказанный подход, я могу загружать и отображать изображение во всех основных браузерах (Chrome, Firefox, Edge, Safari).
Но в браузере IE, работающем на 32-битных компьютерах, я получаю следующее предупреждение, и при декодировании из URL-адреса большого двоичного объекта возникает сбой при рендеринге, эта проблема не всегда воспроизводима (т. Е. Иногда рендеринг изображения происходит успешно, а иногда не удается).
Невозможно декодировать изображение по URL: 'blob: ....'
Я искал эту проблему и нашел эту ссылку https://stackoverflow.com/a/39792856/5545458,, но в моемВ случае, если это решение не работает.Я сомневаюсь, что это возможно из-за проблемы с памятью, но не уверен, пожалуйста, подскажите, что может быть возможной причиной этой проблемы.
Также будет полезно, если после сохранения в xml-запросе я установлю значение nullкак капля, как показано ниже?
xhr.onload = function(){
var urlCreator = window.URL || window.webkitURL;
var url = urlCreator.createObjectURL(this.response), domImg =
document.getElementById('#sample');
this.response = null;
//rest goes here
}