如何解决canvas绘图时遇到的跨域问题

不言
发布: 2018-06-14 11:25:33
原创
3895 人浏览过

这篇文章主要介绍了详解canvas绘图时遇到的跨域问题的相关资料,内容挺不错的,现在分享给大家,也给大家做个参考。

当在canvas中绘制一张外链图片时,我们会遇到一个跨域问题。

示例如下:

    crossorigin 
登录后复制

当在浏览器中打开这个页面时,你会发现这个问题:

Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

这是受限于 CORS 策略,会存在跨域问题,虽然可以使用图像,但是绘制到画布上会污染画布,一旦一个画布被污染,就无法提取画布的数据,比如无法使用使用画布toBlob(),toDataURL(),或getImageData()方法;当使用这些方法的时候 会抛出上面的安全错误

这是一个苦恼的问题,但幸运的是img新增了crossorigin属性,这个属性决定了图片获取过程中是否开启CORS功能:

    crossorigin 
登录后复制

对比上面两段JS代码,你会发现多了这一行:

image.setAttribute('crossorigin', 'anonymous');
登录后复制

就是这么简单,完美的解决了!

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

关于canvas线条的属性

如何使用canvas实现图片马赛克

以上是如何解决canvas绘图时遇到的跨域问题的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!