svg转png下载

 从后端获取如上图的svg图片路径:imgUrl;图片信息:iconMsg

主要思路:

1、将svg转换成svg+xml的base64

2、根据svg+xml的base64创建canvas

3、根据创建的canvas转换成png的base64

getPngBase64(imgUrl, iconMsg) {
            const _this = this;
            window.URL = window.URL || window.webkitURL;
            const xhr = new XMLHttpRequest();
            xhr.open('get', imgUrl, true);
            // 至关重要
            xhr.responseType = 'blob';
            xhr.onload = function () {
                if (this.status === 200) {
                    // 得到一个blob对象
                    const blob = this.response;
                    // 至关重要
                    const oFileReader = new FileReader();
                    oFileReader.onloadend = function (e) {
                        // 此处拿到的已经是 base64的图片了
                        const base64 = e.target.result;
                        // 创建图片容器
                        const img = new Image();
                        // imageBase64 为svg+xml的Base64 文件流
                        img.src = base64;
                        img.onload = () => {
                            // 获取图片大小
                            const width = img.width;
                            const height = img.height;
                            // 图片创建后再执行,转Base64过程
                            const canvas = document.createElement('canvas');
                            // 设置好 宽高  不然图片 不完整
                            canvas.width = width;
                            canvas.height = height;
                            const context = canvas.getContext('2d');
                            context.drawImage(img, 0, 0);
                            const ImgBase64 = canvas.toDataURL('image/png');
                            _this.basePng = ImgBase64;
                            _this.downloadPngFile(_this.basePng, iconMsg.name);
                            // ImgBase64 为转换后的 png ImgBase64 文件流
                        };
                    };
                    oFileReader.readAsDataURL(blob);
                }
            };
            xhr.send();
        },

4、下载

downloadPngFile(url, name) {
            const a = document.createElement('a');
            a.setAttribute('href', url);
            a.setAttribute('download', name);
            a.setAttribute('target', '_blank');
            const clickEvent = document.createEvent('MouseEvents');
            clickEvent.initEvent('click', true, true);
            a.dispatchEvent(clickEvent);
        },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Golang中,你可以使用第三方库来实现SVG换为PNG的功能。一个常用的库是github.com/ajstarks/svgo。以下是一个简单的示例代码,演示了如何使用该库将SVG换为PNG: ```go package main import ( "fmt" "github.com/ajstarks/svgo" "image/png" "os" ) func main() { // 创建一个新的PNG文件 file, err := os.Create("output.png") if err != nil { fmt.Println("无法创建PNG文件:", err) return } defer file.Close() // 创建一个SVG绘图上下文 canvas := svg.New(png.Writer(file), true) // 在SVG上下文中绘制图像 canvas.Start(500, 500) canvas.Circle(250, 250, 200, "fill:none;stroke:black") canvas.End() // 完成绘制并将SVG换为PNG canvas.Flush() fmt.Println("SVG换为PNG成功") } ``` 在这个示例中,我们使用svgo库创建了一个SVG绘图上下文,并在其中绘制了一个圆形。然后,我们使用png.Writer将SVG换为PNG,并将结果保存到output.png文件中。 请注意,这只是一个简单的示例,你可以根据自己的需求进行更复杂的SVG换操作。同时,你也可以使用其他的SVG换库,根据你的具体需求选择合适的库进行使用。 #### 引用[.reference_title] - *1* *2* *3* [svgpngsvgpng格式步骤](https://blog.csdn.net/qs1137981843/article/details/129086583)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值