【问题标题】:getScreenShot function returns error in v6getScreenShot 函数在 v6 中返回错误
【发布时间】:2018-08-08 08:15:32
【问题描述】:

在查看器 v6 中执行 Viewer.getScreenShot(w, h, cb) 函数时出现以下错误。它在 v5 中可以正常工作。

有人知道如何解决这个问题吗?

谢谢

viewer3D.min.js?v=6.0.*:63未捕获DOMException:构造ImageData失败:输入数据长度不是(4 * width)的倍数。
e (https://developer.api.autodesk.com/modelderivative/v2/viewers/viewer3D.min.js?v=6.0.*:63:24318)
e.getScreenShot (https://developer.api.autodesk.com/modelderivative/v2/viewers/viewer3D.min.js?v=6.0.*:63:24936)
a.h.getScreenShot (https://developer.api.autodesk.com/modelderivative/v2/viewers/viewer3D.min.js?v=6.0.*:57:21319)

【问题讨论】:

  • 是的,我已经看到了,但这并不表示 getScreenShot() 函数有任何变化。谢谢。
  • 这个函数看起来不错,我刚刚在控制台中验证了这个函数,它可以很好地获取屏幕截图:NOP_VIEWER.getScreenShot(1000,1000, function(url){window.open(url) )})。你能粘贴你的代码吗?
  • @ZhongWu 我的代码和你的一样,只是尺寸是 400 x 160。这是 macOS 上的 Chrome。你的环境是什么?所以,我可以在这里验证一下。

标签: javascript autodesk-forge


【解决方案1】:

好的,我找到了问题所在。在 v5 中,宽度和高度被接受为 int 或 float,但在 v6 中,仅接受 int。计算出来的尺寸应该通过round()函数来解决问题。

【讨论】:

    【解决方案2】:

    正如错误指出的,ImageData的输入数据长度应该是(4*width)的倍数,因为你输入了w和h的float值,所以数组大小可能不正确,查看https://stackoverflow.com/questions/38556730/imagedata-byte-length-is-not-a-multiple-of-4-width 了解详情.

    【讨论】:

    • 是的。我明白了这个问题。我无法立即意识到这一点,因为浮点值在 v5 中有效。当我切换到 v6 时,这个错误突然出现了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2021-12-13
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多