Подтвердить что ты не робот

Ошибка "Aw Snap" при загрузке большого изображения в хром

Я пытаюсь загрузить изображение с сервера.

Изображение динамически создается на сервере, которое затем передает имя [включая относительный путь] клиенту для загрузки в холст.

Существует 3 слоя холста, установка одинакового размера изображения и загрузка изображения на один холст.

Все работает отлично для небольших изображений. Но для больших изображений [при предположении выше 9000 x 7000 px] он выдает синюю ошибку "Aw Snap". Иногда ему удавалось загружать изображение, но бросать ошибку "Aw Snap", перемещая мышь поверх холста, перемещая полосы прокрутки или рисуя линию над ним.

Я увеличил размер -disk-cache, но не помог.

Даже установка этих значений не помогла [--disable-accelated-2d-canvas, --blacklist-accelated-compositing, --blacklist-webgl, --disable-accelated-compositing, --disable-accelated- слои]

Протестировано с помощью IE и Safari - работает нормально, но некоторые задержки.

Отправьте свои мысли и подсказки. Любая помощь приветствуется.

Вот мой код

function LoadImage(imageUrl) {
    try {
        var image_View = document.getElementById("imageView");
        var image_Temp = document.getElementById("imageTemp");
        var image_Tempt = document.getElementById("imageTempt");
        var ctx = image_View.getContext("2d");

        var img = new Image();
        img.onerror = function() {
            alert('The image could not be loaded.');
        }
        img.onload = function() {
            image_View.width = img.width;
            image_View.height = img.height;
            image_Temp.width = img.width;
            image_Temp.height = img.height;
            image_Tempt.width = img.width;
            image_Tempt.height = img.height;

            ctx.clearRect(0, 0, image_View.width, image_View.height);
            ctx.drawImage(img, 1, 1, img.width, img.height);
        }

        img.src = imageUrl;
    }
    catch (err) {
        alert(err.message);
    }
}
4b9b3361

Ответ 1

"Aw Snap" означает, что ОС запустила процесс Chrome для этой вкладки. Это происходит, когда ваша ОС думает, что Chrome сделал что-то неправильно (например, когда он выделяет слишком много памяти, повреждение памяти, устаревшие разделяемые библиотеки после системного патча).

Возможно, Chrome нуждается в слишком большой памяти для отображения таких огромных изображений. Обходной путь состоял бы в том, чтобы разрезать изображения на части ( "черепица" ) и просто отобразить те плитки, которые видны на экране.

Чтобы точно узнать, вы можете запустить Chrome из командной строки. Иногда он печатает более подробные сообщения об ошибках на консоли при сбое части.

Вы также должны попытаться применить последние исправления (security) к своей ОС, получить последнюю версию Chrome и перезагрузить компьютер, чтобы убедиться, что это не глюк. На моем компьютере (16 ГБ оперативной памяти, 1 ГБ видеопамяти) я могу открыть изображение PNG размером 19'000х19'000 без ошибок, для его отображения требуется всего ~ 20 секунд.