如今这很简单.

基本思路是:

> svg到画布

> canvas到dataUrl

>从dataUrl触发下载

它实际上在stackoverflow片段之外工作

var btn = document.querySelector('button');

var svg = document.querySelector('svg');

var canvas = document.querySelector('canvas');

function triggerDownload (imgURI) {

var evt = new MouseEvent('click', {

view: window,

bubbles: false,

cancelable: true

});

var a = document.createElement('a');

a.setAttribute('download', 'MY_COOL_IMAGE.png');

a.setAttribute('href', imgURI);

a.setAttribute('target', '_blank');

a.dispatchEvent(evt);

}

btn.addEventListener('click', function () {

var canvas = document.getElementById('canvas');

var ctx = canvas.getContext('2d');

var data = (new XMLSerializer()).serializeToString(svg);

var DOMURL = window.URL || window.webkitURL || window;

var img = new Image();

var svgBlob = new Blob([data], {type: 'image/svg+xml;charset=utf-8'});

var url = DOMURL.createObjectURL(svgBlob);

img.onload = function () {

ctx.drawImage(img, 0, 0);

DOMURL.revokeObjectURL(url);

var imgURI = canvas

.toDataURL('image/png')

.replace('image/png', 'image/octet-stream');

triggerDownload(imgURI);

};

img.src = url;

});

svg to png

Look, i'm cool

关于下载部分,您可以设置文件名等(虽然不在本例中).前几天我回答了一个关于如何从给定页面下载特​​定部分HTML的问题.下载部分可能有用:https://stackoverflow.com/a/28087280/2178180

update:现在让你指定文件名

html保存为svg,JavaScript – 将内联SVG保存为JPEG / PNG / SVG相关推荐

  1. html5svg在线编辑器,HTML5 内联 SVG

    HTML5 内联 SVG HTML5 支持内联 SVG. SVG Sorry, your browser does not support inline SVG. 什么是SVG? SVG 指可伸缩矢量 ...

  2. Html内联定义特点,HTML5

    HTML5 内联 SVG HTML5 支持内联 SVG (Scalable Vector Graphics),看下图例子,进一步了解 SVG : SVG 对不起,您的浏览器不支持内联SVG(Sorry ...

  3. thymeleaf 语法——th:text默认值、字符串连接、th:attr、th:href 传参、th:include传参、th:inline 内联、th:each循环、th:with、th:if

    文章目录 1.表达式 1.1.简单表达式 1.2.三元运算.条件表达式: 1.3.默认表达式 1.4.综合使用,属性值的 if - else 2.字符串连接.拼接 3.th:attr 的使用 4.th ...

  4. 汇编语言---GCC内联汇编

    GCC支持在C/C++代码中嵌入汇编代码,这些代码被称作是"GCC Inline ASM"(GCC内联汇编); 一.基本内联汇编(寄存器前一个%) GCC中基本的内联汇编非常易懂, ...

  5. html内敛样式background,js获取内联样式的方法

    javascript 获取内联样式 #box{ width:100px; height:100px; background-image:url(1.jpg); background-size:140% ...

  6. C++内联函数、友元函数、名称空间

    内联函数:C++为提高程序运行速度所做的一项改进. 常规函数和内联函数的区别在于:C++编译器如何将它们组合到程序中.源程序编译得到可执行程序--由一组机器语言指令组成.运行程序时,OS将这些指令载入 ...

  7. svg配合css3动画_如何使用CSS制作节日SVG图标动画

    svg配合css3动画 正是这个季节,因此在本教程中,我将逐步创建一些CSS动画,以假日为主题的SVG图标. Iconmelon上有一些很棒的图标,该网站上有许多免费的矢量图标集,可让您尽其所能 . ...

  8. HTML5 Canvas、内联 SVG、Canvas vs. SVG

    canvas 元素用于在网页上绘制图形. 什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. 画布是一个矩形区域,您可以控制其每一像素. canv ...

  9. JavaScript基础13-day15【DOM增删改、DOM添加删除记录、操作内联样式、获取元素的样式、DOM Element 对象、滚动条练习、事件对象、div跟随鼠标移动、事件冒泡】

    学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...

最新文章

  1. 不要一辈子靠技术生存
  2. 直接铸造与“ as”运算符?
  3. Linux命令:sed
  4. PHP随机配菜_PHP+JS三级菜单联动菜单实现方法
  5. Java Object中的clone方法
  6. java中的方法在哪里_Java中的本机方法是什么,应在哪里使用?
  7. 根据用户id查询菜单列表(菜单权限问题)
  8. java导出excel_java按需导出Excel并自动合同单元格
  9. Mac下安装Fiddler抓包工具(别试了,会报错,没办法使用)
  10. Faster-RCNN.Pytorch的使用
  11. 2022年最完整的html网页跳转代码大全
  12. Docker之Jitsi Meet视频会议服务
  13. 微服务架构学习与思考(04):微服务技术体系
  14. 马云创业过程中的10次失败(转)
  15. 在centos7上编译EDK2
  16. Reading Comprehension必读paper汇总
  17. 计算机专业秃顶图片,大学被叫惨的三大专业,计算机秃顶是常事,医学专业这个就惨了...
  18. PDF生成插件--TcPDF
  19. vue3.0中props父子传值的改动
  20. python实现阵列信号处理(三):多重信号分类Music算法

热门文章

  1. 深入浅出 Vue 响应式原理!
  2. GitHub 告急!黑客威胁程序员不交钱就删库!
  3. 只会写代码的程序员永远无法出色?!
  4. 黑客少年手机编 10 万行代码,恶意篡改 App 只为了 “炫技”?
  5. 王思聪也救不了熊猫直播了?
  6. 微信“欲封”百度;AI 主播入职新华社;今日头条遭狠罚 | 极客头条
  7. 开奖啦!CSDN 程序员节 1024 中奖名单揭晓!
  8. 这届互联网公司月饼:阿里卡哇伊,百度酷炫风,京东乾隆审美……
  9. 网易“吃鸡”,干腾讯何事?
  10. php 发送多个,向多个地址发送邮件的php类