如何解决 getImageData 跨域问题

2015-07-23 16:50:05 +08:00
 danube533

项目需要用HTML5的getImageData方法实现图片的一些特效,在本地测试没问题,放到cdn上浏览器提示跨域,即使用二级域名也不行,图片数量很多,因此必须放到cdn上,请问如何解决?

5180 次点击
所在节点    HTML
8 条回复
leojoy710
2015-07-23 16:53:10 +08:00
这东西不是拿canvas里面的信息的么...为什么会有跨域...
danube533
2015-07-23 16:56:01 +08:00
@leojoy710 拿外部的图片。。。
leojoy710
2015-07-23 16:57:31 +08:00
img图片过来 然后画到canvas里面 然后再拿?
danube533
2015-07-23 17:08:47 +08:00
@leojoy710 Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.
leojoy710
2015-07-23 17:11:29 +08:00
...这是第一次知道...
不如给图片加CORS吧... 一般CDN也不会修改头...
yyy
2015-07-23 17:25:46 +08:00
1、图片的相应头要有 Access-Control-Allow-Origin:*
2、js代码里有类似这样的
var img = new Image();
img.crossOrigin = '';
img.src = src;

crossOrigin必须在src之前声明。
danube533
2015-07-24 17:24:16 +08:00
@yyy 又报错了
Uncaught IndexSizeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0
yyy
2015-07-24 17:59:38 +08:00
@danube533 那就给img对象加上个宽度属性。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/207836

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX