百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>html5教程> 怎样解决canvas画图时碰到的跨域题目-
分享文章到:

怎样解决canvas画图时碰到的跨域题目-

发布时间:09/01 来源:未知 浏览: 关键词:
这篇文章主要介绍了详解canvas画图时碰到的跨域题目的相干材料,内容挺不错的,此刻分享给大家,也给大家做个参照 。 这篇文章主要介绍了详解canvas画图时碰到的跨域题目的相干材料,内容挺不错的,此刻分享给大家,也给大家做个参照 。

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

示例如下:




    
    crossorigin


    
    
    《script》
        var canvas = document.getElementById('canvas');
        var ctx = canvas.getContext('2d');
        var image = new Image();
        image.onload = function() {
            ctx.drawImage(image, 0, 0);
            document.getElementById('image').src = canvas.toDataURL('image/png');
        };
        image.src = 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3497300994,2503543630&fm=27&gp=0.jpg';
    《script》

当在阅读器中打开这个页面时,你会发明这个题目:

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

这是挨限于 CORS 战略,会存在跨域题目,虽然可以运用图像,但是绘制到画布上会污染画布,一旦一个画布被污染,就没法提取画布的数据,比方没法运用运用画布toBlob(),toDataURL(),或getImageData()办法;当运用这些办法的时候 会抛出上面的平安差错

这是一个苦恼的题目,但荣幸的是img新增了crossorigin属性,这个属性决议了图片猎取历程中可否开启CORS功能:




    
    crossorigin


    
    
    《script》
        var canvas = document.getElementById('canvas');
        var ctx = canvas.getContext('2d');
        var image = new Image();
        image.setAttribute('crossorigin', 'anonymous');
        image.onload = function() {
            ctx.drawImage(image, 0, 0);
            document.getElementById('image').src = canvas.toDataURL('image/png');
        };
        image.src = 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3497300994,2503543630&fm=27&gp=0.jpg';
    《script》

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

image.setAttribute('crossorigin', 'anonymous');

就是这么简略,完善的解决了!

以上就是本文的全部内容,但愿对大家的学习有所帮忙,更多相干内容请关注百分百源码网!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板