• 周六. 4月 20th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

html2canvas截图 下载图片

admin

11月 28, 2021
 1 // 引入htmlcanvas
 2 import Vue from 'vue';
 3 import html2canvas from 'html2canvas';
 4  
 5 Vue.prototype.$html2canvas = html2canvas;
 6 
 7 // 点击保存调用方法
 8 handleSavePic(e) {
 9     this.bottomDialog = e
10     const width = this.$refs['save-img'].clientWidth
11     const height = this.$refs['save-img'].scrollHeight
12     const self = this
13 
14       // 截图不全 备用滚动到顶部方案
15       // window.pageYoffset = 0;
16       // document.documentElement.scrollTop = 0;
17       // document.body.scrollTop = 0;
18 
19     this.$html2canvas(this.$refs['save-img'], {
20       backgroundColor: 'red',
21       useCORS: true, 
22        
23       // 隐藏某个不像被截图的元素
24       ignoreElements:(element)=>{
25         if(element.id ==='pirntHideButton')
26         return true;
27       },
28 
29       scale: 2,
30       width,
31       height,
32       windowHeight: height,
33       scrollX: 0,
34 
35       //移动端截图截不全的解决办法(不兼容ios)
36       // scrollY: -window.scrollY
37       scrollY: -document.documentElement.scrollTop
38     }).then(canvas => {
39       self.imgUrl = canvas.toDataURL();
41       // console.log(self.imgUrl)
42       self.downloadFile('download.png', self.imgUrl);
43     });
44   },
45     
46     // 下载图片
47     downloadFile(fileName, content) {
49      // 浏览器
50         const aLink = document.createElement('a');
51         const blob = this.base64ToBlob(content);
52         const evt = document.createEvent("HTMLEvents");
53         evt.initEvent("click", true, true);
54         aLink.download = fileName;
55         aLink.href = URL.createObjectURL(blob);
56         aLink.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));
57       
58     },
59     base64ToBlob(code) {
60       const parts = code.split(';base64,');
61       const contentType = parts[0].split(':')[1];
62       const raw = window.atob(parts[1]);
63       const rawLength = raw.length;
64       const uInt8Array = new Uint8Array(rawLength);
65       for (let i = 0; i < rawLength; ++i) {
66         uInt8Array[i] = raw.charCodeAt(i);
67       }
68       return new Blob([uInt8Array], { type: contentType });
69     },    

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注