javascript - 在 chrome 中加载大图像时出现 “Aw Snap” 错误

标签 javascript html image google-chrome canvas

我正在尝试从服务器加载图像。

图像是在服务器上动态创建的,然后将名称[包括相对路径]传递给客户端以加载到 Canvas 中。

canvas有3层,设置相同大小的图片,加载图片到一个canvas。

对于小图像一切正常。 但是对于大图像,[假设超过 9000 x 7000 像素] 它会抛出“Aw Snap”蓝屏错误。 有时它设法加载了图像,但通过将鼠标移到 Canvas 上、移动滚动条或在其上画一条线来抛出“Aw Snap”错误。

我增加了 --disk-cache-size 但没有帮助。

即使设置这些值也无济于事 [ --disable-accelerated-2d-canvas, --blacklist-accelerated-compositing, --blacklist-webgl, --disable-accelerated-compositing, --disable-accelerated-图层]

已使用 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);
    }
}

最佳答案

“Aw Snap”表示操作系统终止了此选项卡的 Chrome 进程。当您的操作系统认为 Chrome 做错了什么(例如分配过多内存、内存损坏、系统补丁后共享库过时)时,就会发生这种情况。

Chrome 可能需要太多内存才能显示这么大的图像。解决方法是将图像切割成碎片(“平铺”)并仅显示屏幕上可见的那些平铺。

要确定答案,您可以从命令行运行 Chrome。有时,它会在部分崩溃时在控制台上打印更多描述性错误消息。

您还应该尝试将最新的(安全)补丁应用到您的操作系统,获取最新的 Chrome 并重新启动以确保它不是故障。在我的计算机上(16GB RAM,1GB 视频 RAM),我可以毫无错误地打开 19'000x19'000 PNG 图像,帧渲染它只需要大约 20 秒。

关于javascript - 在 chrome 中加载大图像时出现 “Aw Snap” 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30320069/

相关文章:

java - 如何将 HTML 代码渲染或转换为由所见即所得编辑器生成的纯文本

html - 如何在 CSS 规则中将图像的最大高度设置为父 div 的高度?

javascript - 有什么方法可以检测 Swiffy 动画何时完成?

javascript - 使用 leaflet js 将单击类添加到路径

javascript - AngularJS ng-click 在 ng-repeat 中更改颜色

Javascript:函数不会被触发

css - 帮助绝对定位的图像 css 卡在浏览器的左上角

html - 无重复中心 center vs cover

javascript - 根据窗口大小动态调整图像缩略图,全出血

image - CNN 的负训练图像示例