Commit 03df97d165dedbf230ef1fea74105170eb9bfec2

Authored by zhiyangdu
1 parent b8dc2ecb

图片下载

package.json
@@ -14,6 +14,7 @@ @@ -14,6 +14,7 @@
14 "babel-polyfill": "^6.26.0", 14 "babel-polyfill": "^6.26.0",
15 "callapp-lib": "^2.1.8", 15 "callapp-lib": "^2.1.8",
16 "es6-promise": "^4.2.8", 16 "es6-promise": "^4.2.8",
  17 + "html2canvas": "^1.0.0-rc.5",
17 "jweixin-module": "^1.4.1", 18 "jweixin-module": "^1.4.1",
18 "mint-ui": "^2.2.13", 19 "mint-ui": "^2.2.13",
19 "sha1": "^1.1.1", 20 "sha1": "^1.1.1",
src/pages/test.vue
  1 +// cdn图片有问题 需要换成本地的图片
1 <template> 2 <template>
2 - <div class="test">  
3 - <img @touchstart="gtouchstart()" @touchmove="gtouchmove()" @touchend="gtouchend()" style="width: 100%" src="https://wjj.ys2.cnliveimg.com/769/shop/img/2020/01/06/5e12f2ead41bb.jpg"/>  
4 - <div id="captureId" class="capture" v-show="firstFlag"> 3 + <div class="index">
  4 + <div class="canvas" ref="canvas">
  5 + <div class="avatar">
  6 + <img src="https://wjjtest.ys2.cnliveimg.com/shop/img/2019/12/31/5e0b06db22be5.jpg" alt="">
  7 + </div>
  8 + </div>
  9 + <div class="save_btn" @click="savecanvas">
  10 + 保存图片
5 </div> 11 </div>
6 - <img :src="dataURL" alt="" v-show="!firstFlag"/>  
7 - <!--<div style="width:100%; height: 50px; line-height: 50px; background-color: #000; font-size: 18px;color: #ffffff;text-align: center;">-->  
8 - <!--&lt;!&ndash;保存图片&ndash;&gt;-->  
9 - <!--</div>-->  
10 </div> 12 </div>
11 </template> 13 </template>
12 <script> 14 <script>
@@ -14,46 +16,61 @@ @@ -14,46 +16,61 @@
14 export default { 16 export default {
15 data () { 17 data () {
16 return { 18 return {
17 - dataURL:'https://wjj.ys2.cnliveimg.com/769/shop/img/2020/01/06/5e12f31607200.jpg',  
18 - firstFlag:true,  
19 - timeOutEvent:0  
20 }; 19 };
21 }, 20 },
22 mounted(){ 21 mounted(){
23 -  
24 }, 22 },
25 methods: { 23 methods: {
26 - onimg(){  
27 - document.documentElement.style.webkitUserSelect='none';  
28 - document.documentElement.style.webkitTouchCallout='none';  
29 - },  
30 - //js  
31 - gtouchstart () {  
32 - // 开始触摸  
33 - this.timeOutEvent = setTimeout(() => {  
34 - // 长按3秒  
35 - this.timeOutEvent = 0  
36 - if(this.isiPhone.value){  
37 - window.webkit.messageHandlers.CNDSCheckAllowVisitPhotoAlbumHandler.postMessage({body: {}});  
38 - }else {  
39 - if (window.obj && window.obj.CNDSCheckAllowVisitPhotoAlbumHandler) {  
40 - // 调取相册  
41 - window.obj.CNDSCheckAllowVisitPhotoAlbumHandler();  
42 - }  
43 - }  
44 - }, 3000) 24 + savecanvas(){
  25 + let canvas = document.querySelector('.canvas');
  26 + let that = this;
  27 + html2canvas(canvas,{scale:2,logging:false,useCORS:true}).then(function(canvas) {
  28 + let type = 'png';
  29 + let imgData = canvas.toDataURL(type);
  30 + // 照片格式处理
  31 + let _fixType = function(type) {
  32 + type = type.toLowerCase().replace(/jpg/i, 'jpeg');
  33 + let r = type.match(/png|jpeg|bmp|gif/)[0];
  34 + return 'image/' + r;
  35 + };
  36 + imgData = imgData.replace(_fixType(type),'image/octet-stream');
  37 + let filename = "UUSound" + '.' + type;
  38 + that.saveFile(imgData,filename);
  39 + });
45 }, 40 },
46 - gtouchmove () {  
47 - // 看具体需求  
48 - // clearTimeout(this.timeOutEvent)  
49 - // this.timeOutEvent = 0  
50 - },  
51 - gtouchend () {  
52 - clearTimeout(this.timeOutEvent)  
53 - this.timeOutEvent = 0 41 + saveFile(data, filename){
  42 + let save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
  43 + save_link.href = data;
  44 + save_link.download = filename;
  45 +
  46 + let event = document.createEvent('MouseEvents');
  47 + event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  48 + save_link.dispatchEvent(event);
54 } 49 }
55 } 50 }
56 } 51 }
57 </script> 52 </script>
58 <style lang='less' scoped> 53 <style lang='less' scoped>
  54 + .index{
  55 + height: 100%;
  56 + width: 100%;
  57 + .canvas{
  58 + height: 100%;
  59 + height: 100%;
  60 + background: #d5574a;
  61 + padding: 0.5067rem 0.6rem 0;
  62 + box-sizing: border-box;
  63 + img{
  64 + width: 100%;
  65 + }
  66 + }
  67 + .save_btn{
  68 + height: 50px;
  69 + background: #333333;
  70 + line-height: 50px;
  71 + text-align: center;
  72 + color: #ffffff;
  73 + font-size: 0.3733rem;
  74 + }
  75 + }
59 </style> 76 </style>