vue 图片转Base64

1.图片地址转Base64 有回调

    
    getBase64(urlcallback) { 
            let Img = new Image(),
            dataURL = '';
            let imgExt = this.extname(url);
            Img.src = url +"?v=" + Math.random(); // 处理缓存,fix缓存bug,有缓存,浏览器会报错;
            Img.setAttribute("crossOrigin"'Anonymous'// 解决控制台跨域报错的问题(没用就跟后台沟通添加跨域)
            Img.onload = function () { //要先确保图片完整获取到,这是个异步事件
                let canvas = document.createElement("canvas"), //创建canvas元素
                width = Img.width//确保canvas的尺寸和图片一样
                height = Img.height;
                canvas.width = width;
                canvas.height = height;
                canvas.getContext("2d").drawImage(Img00widthheight); //将图片绘制到canvas中
                dataURL = canvas.toDataURL('image/'+imgExt); //转换图片为dataURL 
                callback ? callback(dataURL) : null//调用回调函数
            };
        },
 
   调用
   this.getBase64(res.data.data.url, (dataURL=> { 
         console.log(dataURL) //返回的Base64
     })
  
  
  1.1图片地址转Base64 无回调
    
    getBase64(url) {
            var that = this
            let Img = new Image(),
            dataURL = '';
            let imgExt = this.extname(url);
            Img.src = url +"?v=" + Math.random(); // 处理缓存,fix缓存bug,有缓存,浏览器会报错;
            Img.setAttribute("crossOrigin"'Anonymous'// 解决控制台跨域报错的问题(没用就跟后台沟通添加跨域)
            Img.onload = function () { //要先确保图片完整获取到,这是个异步事件
                let canvas = document.createElement("canvas"), //创建canvas元素
                width = Img.width//确保canvas的尺寸和图片一样
                height = Img.height;
                canvas.width = width;
                canvas.height = height;
                canvas.getContext("2d").drawImage(Img00widthheight); //将图片绘制到canvas中
                dataURL = canvas.toDataURL('image/'+imgExt); //转换图片为dataURL
                that.changeUrl(dataURL) //需要调用Base64的函数
            };
        },
 
 
 
posted @ 2020-12-29 10:53  一条丶小咸鱼  阅读(8741)  评论(3编辑  收藏  举报