Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用loadFromJSON更改图像跨源属性?_Javascript_Php_Google App Engine_Google Cloud Storage_Fabricjs - Fatal编程技术网

Javascript 如何使用loadFromJSON更改图像跨源属性?

Javascript 如何使用loadFromJSON更改图像跨源属性?,javascript,php,google-app-engine,google-cloud-storage,fabricjs,Javascript,Php,Google App Engine,Google Cloud Storage,Fabricjs,我使用FabricJS的loadFromJSON方法将一组对象、文本和图像加载到画布上 这些图像来自谷歌云存储。存储它们的存储桶具有正确的CORS设置,用于“允许所有”访问控制“允许原点” 图像将加载为OK,但在尝试使用toDataURL方法保存缩略图时,我得到: 未捕获的安全性错误:未能对“HTMLCanvasElement”执行“toDataURL”:可能无法导出受污染的画布 我不确定为什么,因为图像CORS设置是正确的 我知道有些人建议创建一个新的图像并以这种方式设置属性,但这不适合使用非

我使用FabricJS的loadFromJSON方法将一组对象、文本和图像加载到画布上

这些图像来自谷歌云存储。存储它们的存储桶具有正确的CORS设置,用于“允许所有”访问控制“允许原点”

图像将加载为OK,但在尝试使用toDataURL方法保存缩略图时,我得到:

未捕获的安全性错误:未能对“HTMLCanvasElement”执行“toDataURL”:可能无法导出受污染的画布

我不确定为什么,因为图像CORS设置是正确的

我知道有些人建议创建一个新的图像并以这种方式设置属性,但这不适合使用非常快速简单的loadFromJSON方法


关于为什么CORS设置被忽略,以及关于这个问题的任何想法?

Hrm…直接的JSON指令不应该污染画布。您是否在画布上做了其他操作,比如应用任何图像过滤器?是否有从其他域加载的背景图像?加载背景图像时是否设置了crossOrigin:“anonymous”?有一个覆盖图像,但它是从位于assets文件夹中的同一服务器加载的,在App Engine中标记为静态文件,您无法为此设置crossOrigin属性。您能以JSFIDLE或类似的形式重新创建问题吗?调试器中的调用堆栈看起来如何?干得好。如果您访问任何一个图像URL,在标题中您将看到它有一个用于CORS访问的通配符。但是,当您单击按钮使用toDataURL时,您将看到错误消息。您可能只需在画布上单击一下即可显示图像