HTML2image 网页保存图片并下载到本地,兼容ie浏览器

今天药忘吃喽~ 2022-03-26 03:35 872阅读 0赞
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  7. <meta name="referrer" content="no-referrer" />
  8. <title>html元素转canvas并一键生成png图片(支持img图片元素)</title>
  9. <!-- 修改 低版本浏览器不支持 h5新标签属性 -->
  10. <script src="js/html5shiv.js"></script>
  11. <!-- 蓝鸟 适配 promise -->
  12. <script src="js/bluebird.js"></script>
  13. <script src="js/jquery-3.3.1.js"></script>
  14. <!-- html2canvas将Dom节点在Canvas里边画出来 -->
  15. <script src="js/html2canvas.js"></script>
  16. <style>
  17. p{
  18. font-size: 15px;
  19. font-family: 'Microsoft YaHei', 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'STHeiti', 'WenQuanYi Micro Hei', 'SimSun', sans-serif;
  20. }
  21. #content{
  22. border-radius: 3px;
  23. }
  24. #btnSave,#Download{
  25. position: absolute;
  26. left: 180px;
  27. top: 540px;
  28. width: 78px;
  29. height: 30px;
  30. background-color: #22b4f6;
  31. color: #fff;
  32. text-align: center;
  33. border-radius: 3px;
  34. border: none;
  35. }
  36. #Download{
  37. margin-left: 560px;
  38. }
  39. .tx,.bt{
  40. border: 1px solid #999;
  41. width: 100px;
  42. height: 20px;
  43. border-radius: 3px;
  44. }
  45. .bt{
  46. background-color: #22b4f6;
  47. color: #fff;
  48. text-align: center;
  49. border: none;
  50. }
  51. </style>
  52. </head>
  53. <body>
  54. <div>注意:html2canvas 只能在服务器中抓取img</div>
  55. <div id="content" style="width:500px;height:500px;border:1px solid #22b4f6;float:left;text-align:center; background: #fff;">
  56. <p><img width="80" height="100" src="http://inspect-report-https.autobole.com/FncQF2hj0TlDhZfyK0myI9z5HA-Q" alt="头像"></p>
  57. <p>昵称:马云云</p>
  58. <p>技能:前端 + 后端 + 小程序 + webapp</p>
  59. <p>语言:html5、php、mysql</p>
  60. <p>脚本:javascript</p>
  61. <p>框架:vue.js、smarty、thinkphp、MUI、WeUI、Bootstrap</p>
  62. <p><input type="text" class="tx" placeholder="微信公众号开发"></p>
  63. <p><input type="button" class="bt" value="网站微站开发"></p>
  64. </div>
  65. <div style="width:60px;height:302px;float:left;text-align:center;line-height:302px;font-size:30px;color:#22b4f6;">==></div>
  66. <div style="width:190px;height:302px;float:left;text-align:center;line-height:302px"><img id="images" style="width:300px;height:302px;"
  67. src="" alt=""></div>
  68. <button id="btnSave">抓取图片</button>
  69. </body>
  70. <script>
  71. /*生成canvas图形*/
  72. // 获取按钮id
  73. var btnSave = document.getElementById("btnSave");
  74. // 获取内容id
  75. var content = document.getElementById("content");
  76. // 进行canvas生成
  77. btnSave.onclick = function () {
  78. html2canvas(content, { useCORS: true, scale: 2 }).then(function (canvas) {
  79. var dataUrl = canvas.toDataURL('image/jpeg', 1.0) //image/jpeg 保存文件类型,图片的格式 0-1,表示生成的图片的质量,取值0到1,
  80. $("#images").attr("src", dataUrl);
  81. saveFile(dataUrl, 'richer');
  82. });
  83. }
  84. // // 保存文件函数
  85. var saveFile = function (data, filename) {
  86. if (myBrowser() == "IE") { // if browser is IE
  87. function dataURLtoBlob(dataurl) {
  88. var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
  89. bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
  90. while (n--) {
  91. u8arr[n] = bstr.charCodeAt(n);
  92. }
  93. return new Blob([u8arr], { type: mime });
  94. }
  95. var blob_ = dataURLtoBlob(data); // 用到Blob是因为图片文件过大时,在一部风浏览器上会下载失败,而Blob就不会
  96. var url;
  97. url = {
  98. name: filename, // 图片名称不需要加.png后缀名
  99. src: blob_
  100. };
  101. navigator.msSaveBlob(url.src, url.name + '.png');//filename文件名包括扩展名,下载路径为浏览器默认路径
  102. } else {
  103. var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
  104. save_link.href = data;
  105. save_link.download = filename;
  106. var event = document.createEvent('MouseEvents');
  107. event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  108. save_link.dispatchEvent(event);
  109. }
  110. };
  111. function myBrowser() {
  112. var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  113. var isOpera = userAgent.indexOf("Opera") > -1;
  114. if (isOpera) {
  115. return "Opera"
  116. }; //判断是否Opera浏览器
  117. if (userAgent.indexOf("Firefox") > -1) {
  118. return "FF";
  119. } //判断是否Firefox浏览器
  120. if (userAgent.indexOf("Chrome") > -1) {
  121. return "Chrome";
  122. }
  123. if (userAgent.indexOf("Safari") > -1) {
  124. return "Safari";
  125. } //判断是否Safari浏览器
  126. if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
  127. return "IE";
  128. }; //判断是否IE浏览器
  129. if (userAgent.indexOf("Trident") > -1) {
  130. return "Edge";
  131. } //判断是否Edge浏览器
  132. }
  133. </script>
  134. </html>

demo需要的js 插件库:链接:https://pan.baidu.com/s/1whIBkW0RtASdCo-QwvmXtg 密码:k8m9

发表评论

表情:
评论列表 (有 0 条评论,872人围观)

还没有评论,来说两句吧...

相关阅读