test.vue 2.96 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 class="save_btn" @click="savecanvas">
            保存图片
        </div>
    </div>
</template>
<script>
    import html2canvas from 'html2canvas';
    export default {
        data () {
            return {
            };
        },
        mounted(){
        },
        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),'image/octet-stream');
                    let filename = "UUSound" + '.' + type;
                    debugger
                    that.saveFile(imgData,filename);
                });
            },
            saveFile(data, filename){
                let save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
                save_link.href = data;
                save_link.download = filename;

                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);
                //            调用原生方法
                // 调用分享(新方法)
                if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.toShare) {

                    // 分享
                    window.webkit.messageHandlers.toShare.postMessage({body: {type: type, id: id}});
                } else if (window.obj && window.obj.toShare) {

                    // 分享
                    window.obj.toShare(type, id);
                }
            }
        }
    }
</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;
            background: #333333;
            line-height: 100px;
            text-align: center;
            color: #ffffff;
            font-size: 30px;
        }
    }
</style>