test.vue 3.43 KB
// cdn图片有问题  需要换成本地的图片
<template>
    <div class="index">
        <div class="canvas" ref="canvas">
            <div class="avatar">
                <img src="https://wjjtest.ys2.cnliveimg.com/shop/img/2019/12/31/5e0b06db22be5.jpg" alt="">
            </div>
            <div>
                杜致阳签名
            </div>
        </div>
        <div class="save_btn" @click="savecanvas">
            保存图片
        </div>
    </div>
</template>
<script>
    import html2canvas from 'html2canvas';
    export default {
        data () {
            return {
                imgUrlbase64:null
            };
        },
        mounted(){
        },
        // 直接获取图片url传给原生
        getimgUrl(imgData){
            // 调用原生方法
            // 调用分享(新方法)
            if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.CNDSCheckAllowVisitPhotoAlbumHandler) {
                // 获取URL图片
                window.webkit.messageHandlers.CNDSCheckAllowVisitPhotoAlbumHandler.postMessage({body: {imgData: imgData}});
            } else if (window.obj && window.obj.CNDSCheckAllowVisitPhotoAlbumHandler) {
                // 获取URL图片
                window.obj.CNDSCheckAllowVisitPhotoAlbumHandler(imgData);
            }
        },
        methods: {
            savecanvas(){
                let canvas = document.querySelector('.canvas');
                let that = this;
                html2canvas(canvas,{scale:2,logging:false,useCORS:true}).then(function(canvas) {
                    let type = 'png';
                    let imgData = canvas.toDataURL(type);
                    // 照片格式处理
                    let _fixType = function(type) {
                        type = type.toLowerCase().replace(/jpg/i, 'jpeg');
                        let r = type.match(/png|jpeg|bmp|gif/)[0];
                        return 'image/' + r;
                    };
                    imgData = imgData.replace(_fixType(type),'');
                    let filename = "证书" + '.' + type;
                    if(that.isCNLive){
                        that.getimgUrl(imgData)
                    }else {
                        that.saveFile(imgData,filename);
                    }

                });
            },
            saveFile(data, filename){
                debugger
                let save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
                save_link.href = data;
                save_link.download = filename;
                console.log(save_link.download)
                console.log(save_link.href)
                let event = document.createEvent('MouseEvents');
                event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                save_link.dispatchEvent(event);
            }
        }
    }
</script>
<style lang='less' scoped>
    .index{
        height: 100%;
        width: 100%;
        .canvas{
            height: 100%;
            height: 100%;
            background: #d5574a;
            padding: 0.5067rem 0.6rem 0;
            box-sizing: border-box;
            img{
                width: 100%;
            }
        }
        .save_btn{
            height: 100px;
            line-height: 100px;
            background: #333333;
            text-align: center;
            color: #ffffff;
            font-size: 36px;
        }
    }
</style>