js把图片url转base64


效果:

 

js代码:

        // 百度随便一张图
        var pic = "http://bpic.588ku.com/element_origin_min_pic/19/03/15/75076c485081d15ed9c224ad3e4ce4a1.jpg";
        function getBase64Image(img) {
            var canvas = document.createElement("canvas");
            canvas.width = img.width;
            canvas.height = img.height;
            var ctx = canvas.getContext("2d");
            ctx.drawImage(img, 0, 0, img.width, img.height);
            var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();
            var dataURL = canvas.toDataURL("image/" + ext);
            return dataURL;
        }
        var image = new Image();
        image.setAttribute('crossOrigin', 'anonymous');//设置图片跨域访问!!!!!
        image.src = pic;
        image.onload = function () {
            var base64 = getBase64Image(image);
            console.log('我是图片,我被转化成base64了:', base64);
        }

提醒:

很多人会出现   报错:

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

解决方案1.

如果想使用toDataURL()生成图片文件的话,在canvas绘图过程中使用的图片应该是当前域下的。

解决方案2.  (上面的绿色的字)

        var image = new Image();
        image.setAttribute('crossOrigin', 'anonymous');//设置图片跨域访问!!!!!
 
js