svg转成其他图片格式

百度上搜索的前6,7条都是转载的同一篇文章, 我试了试不知道为啥完全不行。不知道是我菜还是他们都不带脑子,晕着头就是转,自己也没试一下。
这篇是我找到的其他方式,亲测能用。

将这些代码放到一个js文件中

(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代码:

<div id="svgContainer"> <!-- 这里存放你的svg标签 --> <svg width="127px" height="121px" viewBox="0 0 127 121" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> </svg> </div> <button onclick="change()">change</button> <!-- base64svg --> <img src="" id="baseSvg" /> </body> <script> var svgToImg; window.onload = function () { // 获取到svg标签 var svg = document.querySelector('svg'); // 实例化对象 svgToImg = new svgToImg(svg); // 下载 function change() { // svg转图片 console.log(11); svgToImg.change('Marydon', 'jpg'); </script> svg转成其他图片格式百度上搜索的前6,7条都是转载的同一篇文章, 我试了试不知道为啥完全不行。不知道是我菜还是他们都不带脑子,晕着头就是转,自己也没试一下。这篇是我找到的其他方式,亲测能用。将这些代码放到一个js文件中(function (global) { global.svgToImg = function (svgHtml) { this.svgHtml = svgHtml; }; global.svgToImg.prototype = {
1.遇到需要将svg下载的需求,网上找了一些代码,地址是这个https://github.com/exupero/saveSvgAsPng,但是不太好用,莫名的把网页所有的svg都下载了,于是在源码的基础上做了一些小的修改;代码如下所示 var doctype = '<?xml version=1.0 standalone=no?><!DOCTYPE svg PUBLIC -//W3C//DTD SVG 1.1//EN http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd [<!ENTITY nbsp >]>'; functi
svg2Font 将SVG换为TTF / EOT / WOFF / WOFF2 / SVG格式。 注意:svg-> svgfont-> ttf ttf-> EOT ttf-> WOFF ttf-> WOFF2 ttf-> svg, , Unicode字符平面映射 始末字符值 U + 0000-U + FFFF 基本多文种平面 基本多语言平面,简称BMP U + 10000-U + 1FFFF 多文种补充平面 补充多语言平面,简称SMP U + 20000-U + 2FFFF 表意文字补充平面 表意补充平面,简称SIP npm install -g tosvg GitHub结帐 $ git clone https://github.com/yfujii01/tosvg.git ~/.tosvg $ cd ~/.tosvg $ make $ tosvg input.png output.svg
要在项目中使用svg-to-img,请运行: npm install svg-to-img -S 注意:安装svg-to-img时,它将下载保证可与该库一起使用的Chromium的最新版本(〜170Mb Mac,〜282Mb Linux,〜280Mb Win)。 如果您打算在Debian上运行svg-to-img,则需要手动安装以下依赖项: #! /bin/bash apt-get update apt-get install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \ libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk
我可以回答这个问题。你可以使用Python的svglib库来读取和修改SVG格式的图片,使用svgwrite库来生成新的SVG图片。以下是一个简单的示例代码: ```python import os import svgwrite from svglib.svglib import svg2rlg from reportlab.graphics import renderPM # 批量修改SVG图片 def batch_modify_svg(input_dir, output_dir): for filename in os.listdir(input_dir): if filename.endswith(".svg"): # 读取SVG图片 drawing = svg2rlg(os.path.join(input_dir, filename)) # 修改SVG图片 # ... # 生成新的SVG图片 svg_filename = os.path.join(output_dir, filename) svg_drawing = svgwrite.Drawing(svg_filename) svg_drawing.add(svgwrite.path.Path(d=renderPM(drawing, "svg"))) svg_drawing.save() # 示例调用 batch_modify_svg("input_dir", "output_dir") 这个示例代码可以批量读取一个目录下的SVG图片,修改图片内容,并生成新的SVG图片到另一个目录下。你可以根据自己的需求修改代码。