【问题标题】:TextureLoader fail to load cross-origin imageTextureLoader 无法加载跨域图片
【发布时间】:2019-05-22 16:52:05
【问题描述】:

我无法通过 TextureLoader 在 chrome 中加载图像

我想从“https://commons.wikimedia.org/wiki/Special:FilePath/Engels.jpg?width=300”的 URL 加载图像,但我收到错误消息“访问来自 'https://commons.wikimedia.org/wiki/Special:FilePath/Engels.jpg?width=300' 的图像(从 'http://commons.wikimedia.org/wiki/Special:FilePath/Engels.jpg?width=300' 重定向)来自原点 'null'已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。”(我设置 loader.crossOrigin 匿名)。如果我设置 loader.crossOrigin 未定义,则加载程序可以加载图像但可以'不呈现错误“三.WebGLState:TypeError:无法在'WebGLRenderingContext'上执行'texImage2D':找不到与提供的签名匹配的函数。”

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    https://commons.wikimedia.org 的服务器尚未实现 Access-Control-Allow-Origin 标头,因此您可能无法直接获取图像。

    您可以将图像保存到本地文件系统并引用它,这是肯定的。

    【讨论】:

    • 如果我设置 crossOrigin 未定义,为什么加载器可以加载图像(但 WebGL 无法渲染它)
    • 因为crossOrigin 只是向commons.wikimedia.org 请求使用图像的权限。由他们和他们的服务器授予该权限。
    • 我将 url 更改为 'upload.wikimedia.org/wikipedia/commons/7/71/Engels.jpg' 现在我的纹理加载器可以在 crossOrigin 匿名时加载图像。但是 WebGL 仍然无法渲染图像,出现错误 ""THREE.WebGLState: TypeError : 无法在 'WebGLRenderingContext' 上执行 'texImage2D': 找不到与提供的签名匹配的函数。""
    • 我不确定通过远程 url 添加图像并担心相关错误,而不是简单地通过 ocal 文件系统包含它们,您可以获得什么显着优势。
    猜你喜欢
    • 2016-06-03
    • 2014-07-28
    • 2012-04-14
    • 2016-04-21
    • 2012-01-05
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    相关资源
    最近更新 更多