Commit 03df97d165dedbf230ef1fea74105170eb9bfec2

Authored by zhiyangdu
1 parent b8dc2ecb

图片下载

package.json
... ... @@ -14,6 +14,7 @@
14 14 "babel-polyfill": "^6.26.0",
15 15 "callapp-lib": "^2.1.8",
16 16 "es6-promise": "^4.2.8",
  17 + "html2canvas": "^1.0.0-rc.5",
17 18 "jweixin-module": "^1.4.1",
18 19 "mint-ui": "^2.2.13",
19 20 "sha1": "^1.1.1",
... ...
src/pages/test.vue
  1 +// cdn图片有问题 需要换成本地的图片
1 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 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 12 </div>
11 13 </template>
12 14 <script>
... ... @@ -14,46 +16,61 @@
14 16 export default {
15 17 data () {
16 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 21 mounted(){
23   -
24 22 },
25 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 52 </script>
58 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 76 </style>
... ...