【问题标题】:“Aw Snap” error when loading large image in chrome在 chrome 中加载大图像时出现“Aw Snap”错误
【发布时间】:2015-07-30 22:52:40
【问题描述】:

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

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

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

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

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

即使设置这些值也无济于事层]

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

【问题讨论】:

  • 您是否尝试过进入 Chrome 设置 -> 高级选项 -> 隐私并取消选中“预取资源以更快地加载页面”?
  • 投票结束为“太宽泛”,我们真的只能在这里猜测。我建议将此作为错误报告给crbug.com
  • 正如 K3N 所说,我们只能猜测您的代码在重负载下失败的原因(可能是因为负载太重!)。我建议重构您的应用以使用更接近显示尺寸的图像,而不是过大。
  • 很难说,因为没有测试图像,所以问题不完整。如果没有这个,我的 GUESS 通常是使用 base64 URI 而不是指向文件/blob 的 url 引起的问题。 Chrome 有 URI 大小限制。如果是这种情况,请参阅创建一个临时 url,它指向通过 base64 字符串从 blob 创建的 ram 对象:stackoverflow.com/questions/16245767/…

标签: javascript html image google-chrome canvas


【解决方案1】:

转到谷歌浏览器快捷方式的属性将--no-sandbox添加到目标字段的末尾,然后单击应用

【讨论】:

    【解决方案2】:

    您可以调试启用Chrome's logging 的“Aw Snap”错误。

    要启用,请使用以下命令行标志启动 Chrome:

    --enable-logging --v=1
    

    并打开Chrome's user data directory 查找文件。

    【讨论】:

      【解决方案3】:

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

      Chrome 可能需要太多内存来显示如此巨大的图像。解决方法是将图像切成小块(“平铺”)并仅显示那些在屏幕上可见的平铺。

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

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

      【讨论】:

      • 平铺将是一个选项,但我的图像大小甚至不是 max_size 的一半。检查这个:stackoverflow.com/questions/6081483/…
      • 这只是画布元素本身的最大站点。错误“Aw Snap”意味着您的操作系统出于某种原因杀死了 Chrome。还有许多其他因素会影响此错误:您打开了多少其他选项卡,您的操作系统希望为每个 Chrome 进程提供多少内存,有多少选项卡合并到一个进程中,您的 gfx 卡有多少内存免费。
      • @Derin:尝试关闭所有其他选项卡和所有其他应用程序;这有帮助吗?
      • 我已经尝试过了,但没有帮助。另一个有趣的是,它在“Chrome for Mac”中没有失败。只有“Chrome for Windows”有问题。
      猜你喜欢
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多