BUG-canvas.toDataURL-Tainted canvases may not be exported

BUG-canvas.toDataURL-Tainted canvases may not be exported

月光魔力鸭

2019-06-28 08:52 阅读 1142 喜欢 0 canvas toDataURL

BUG 报错Tainted canvases may not be exported 。 在通过canvas 调用 toDataURL的时候出现的问题。

Tainted canvases may not be exported

出现原因: 在通过canvas drawImage 的时候,图片地址使用的是其他服务器的图片,与当前系统不是同源的,所以会在获得url的时候会因为跨域导致报错。

解决方法

在图片加载前,先设置跨域。

var img = new Image();
img.crossOrigin = 'anonymous';
img.src = 'xxx';
img.onload = function(){
    ctx.drawImage(this,0,0,this.width,this.height);
}

这个设置完成后,对应的图片获取的服务端也要设置跨域,不然图片加载还是会不报错的。

解决方法2

getURLBase64 : function(url) {
                return new Promise((resolve, reject) => {
                    var xhr = new XMLHttpRequest()
                    xhr.open('get', url, true)
                    xhr.responseType = 'blob'
                    xhr.onload = function() {
                        console.log(this);
                        if (this.status === 200) {
                            var blob = this.response
                            var fileReader = new FileReader()
                            fileReader.onloadend = function(e) {
                                var result = e.target.result
                                resolve(result)
                            }
                            fileReader.readAsDataURL(blob)
                        }
                    }
                    xhr.onerror = function() {
                        reject()
                    }
                    xhr.send()
                })
            }

将图片通过base64的方式获得,然后设置给图片即可。当然这种情况也需要nginx 设置跨域才可以获取。

这样一看的话,还是第一种更简单方便。

转载请注明出处: https://chrunlee.cn/article/bug-canvas-cross1.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
整理一些相关的信息,防止后续再找不到。
ffmpeg 采集摄像头进行推流,然后播放,实现直播。
很久之前学习chrome扩展插件的时候已经做过一个了,好久没咋用,最近又跑了一个存储服务,准备在配合这个服务做个图床,以后就用这个了,之前的服务器到期忘了迁移数据都没了,这次换了服务器,在家里了,估计以后不会再做了吧,这个算是最后一个了,有啥问题就在这个进行优化了。
最近有个小功能需要一些基础数据,找了一下在小程序上有发现,暂时还没找到他的网站,想着把这些数据爬一些下来做为基础数据使用的。本来还想着直接反编译小程序的,没想到微信变更了加密方式,以前反编译的路子走不通了。
之前做了一段时间的上传相关的断点续传和秒传功能,这里整理下大体思路
简单记录下dockerfile 以及compose配置
上一张中已经完成了比较简易的3D全景浏览,但是...这是写死在xml中的,对于我们实际的项目,这种情况是不可能适应的。所以,来了解下如何动态加载xml已经设置对应的热点。
反爬有很多手段,字体反爬就是其中之一。之前一直都是听过,但是却没怎么在实际爬虫中遇到过,最近在一个爬虫题目网站上看到了,试了试,发现还挺麻烦,当然自己从头研究字体肯定麻烦,简单的是模块多的是,选几个就过了。