js svg转图片格式

 

1.情景展示

  闲来无事的时候,发现chrome扩展程序里面有图像,本想下载下来,却发现文件格式是svg格式,如何将svg文件改成图片格式?

chrome-extension://jlgkpaicikihijadgifklkbpdajbkhjo/image/rating/1-stars.svg

js svg转图片格式_第1张图片

2.解决方案

  第一,JavaScript文件。

(function (global) {
    global.svgToImg = function (svgHtml) {
        this.svgHtml = svgHtml;
    };
    global.svgToImg.prototype = {
        /**
         * svg转图片
         * @description
         * 1.将svg转base64;
         * 2.将base64格式的svg转指定的图片格式并下载
         * @param fileName
         * 图片名称
         * @param imgType
         * 图片类型:jpg/png/bmp
         *
         */
        change:function (fileName,imgType) {
            var This = this;
            //1.给svg标签添加属性:version和xmlns
            [
                ['version', 1.1],
                ['xmlns', "http://www.w3.org/2000/svg"],
            ].forEach(function(item){
                This.svgHtml.setAttribute(item[0], item[1]);
            });
            // 2.获取到svg标签+标签内的所有元素
            var str = This.svgHtml.parentNode.innerHTML;
 
            //3.创建img
            var img = document.createElement('img');
 
            // 4.svg格式的base64图像
            img.setAttribute('src', 'data:image/svg+xml;base64,'+ btoa(unescape(encodeURIComponent(str))));
            //base64格式的svg
            //document.getElementById('baseSvg').src='data:image/svg+xml;base64,'+ btoa(unescape(encodeURIComponent(str)));
            
            // 5.转换成指定图片格式
            img.onload = function(){
                // 1.创建canvas
                var canvas = document.createElement('canvas');
                var context = canvas.getContext("2d");
 
                canvas.width = img.width;
                canvas.height = img.height;
                // 2.根据base64格式的svg生成canvas
                context.drawImage(img, 0, 0);
                
                // 3.将canvas转字符串(按指定好的图片格式)
                var canvasData = canvas.toDataURL("image/" + imgType);
                // 4.创建图片元素
                var img2 = document.createElement('img');
                // 5.生成图片
                img2.setAttribute('src', canvasData);
                
                // 6.下载该图片
                img2.onload = function () {
                    var a = document.createElement("a");
                    // 下载
                    a.download = fileName + "." + imgType;
                    a.href = img2.getAttribute('src');
                    a.click();
                };
            };
        }
    }
}(this)); 

  第二,HTML页面。  


    

  第三,引入JS代码



3.效果展示

js svg转图片格式_第2张图片

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

  • 个人主页

 

 

转载于:https://www.cnblogs.com/Marydon20170307/p/11187571.html

你可能感兴趣的:(js svg转图片格式)