溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Vue怎么引入sign-canvas實(shí)現(xiàn)簽名畫(huà)板效果

發(fā)布時(shí)間:2023-03-27 15:39:55 來(lái)源:億速云 閱讀:127 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇“Vue怎么引入sign-canvas實(shí)現(xiàn)簽名畫(huà)板效果”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“Vue怎么引入sign-canvas實(shí)現(xiàn)簽名畫(huà)板效果”文章吧。

Vue引入sign-canvas實(shí)現(xiàn)簽名畫(huà)板

效果圖

Vue怎么引入sign-canvas實(shí)現(xiàn)簽名畫(huà)板效果

1.安裝

npm i sign-canvas --save

2.使用

<template>
    <div>
        <el-card shadow="hover" header="在線簽名演示">
            <el-alert
                title="感謝優(yōu)秀的 `sign-canvas`,項(xiàng)目地址:https://github.com/langyuxiansheng/vue-sign-canvas"
                type="success"
                :closable="false"
                class="mb15"
            ></el-alert>
            <el-button type="primary" size="small" icon="el-icon-edit" @click="onSignCanvasClick">點(diǎn)擊進(jìn)行簽名</el-button>
        </el-card>
        <el-dialog title="在線簽名" :visible.sync="signVisible" :close-on-click-modal="true" :close-on-press-escape="true" :width="signDialogWidth">
            <sign-canvas class="sign-canvas" ref="SignCanvas" :options="signOptions" v-model="signValue" />
            <div slot="footer" class="dialog-footer">
                <el-button size="small" @click="onCancelSign">取消</el-button>
                <el-button type="danger" size="small" @click="onCanvasClear">清空</el-button>
                <el-button type="primary" size="small" @click="onSaveAsImg">保存</el-button>
            </div>
        </el-dialog>
    </div>
</template>
 
<script>
import SignCanvas from 'sign-canvas';
export default {
    name: 'funSignCanvas',
    components: {
        SignCanvas,
    },
    data() {
        return {
            signVisible: false,
            signDialogWidth: '',
            signValue: '',
            signOptions: {
                lastWriteSpeed: 1,
                lastWriteWidth: 2,
                lineCap: 'round',
                lineJoin: 'round',
                canvasWidth: 729,
                canvasHeight: 460,
                isShowBorder: false,
                bgColor: '#E6E6E6',
                borderWidth: 1,
                borderColor: '#ff787f',
                writeWidth: 5,
                maxWriteWidth: 30,
                minWriteWidth: 5,
                writeColor: '#101010',
                isSign: true,
                imgType: 'png',
            },
        };
    },
    mounted() {
        this.initSignConfig();
        window.addEventListener('resize', this.initSignConfig);
    },
    methods: {
        // 初始化配置信息
        initSignConfig() {
            this.signDialogWidth = `${document.body.offsetWidth / 2 + 40}px`;
            this.signOptions.canvasWidth = document.body.offsetWidth / 2;
            this.signOptions.canvasHeight = document.body.offsetHeight / 2;
        },
        // 打開(kāi)簽名彈窗
        onSignCanvasClick() {
            this.signVisible = true;
        },
        // 取消簽名
        onCancelSign() {
            this.signVisible = false;
            this.onCanvasClear();
        },
        // 清空簽名
        onCanvasClear() {
            this.$refs.SignCanvas.canvasClear();
        },
        // 保存簽名
        onSaveAsImg() {
            const img = this.$refs.SignCanvas.saveAsImg();
            console.log(img);
        },
    },
    destroyed() {
        window.removeEventListener('resize', this.initSignConfig);
    },
};
</script>

3.生成的base64上傳服務(wù)器

Vue怎么引入sign-canvas實(shí)現(xiàn)簽名畫(huà)板效果

可根據(jù)base64轉(zhuǎn)blod上傳至服務(wù)器

Js圖片Base64位轉(zhuǎn)換為blob上傳到服務(wù)器

//轉(zhuǎn)碼方法
function convertBase64UrlToBlob(urlData){
   var localData= 'data:image/png...'; //假定dataUrl為base64位
   let base = atob(localData.substring(localData.indexOf(',') + 1)); // base是將base64編碼解碼,去掉data:image/png;base64部分
   let length = base.length;
   let url = new Uint8Array(length);
   while (length--) {
       url[length] = base.charCodeAt(length);
   }
   let file = new File([url], 'a.jpg', {
       type: 'image/jpg'
   })
   //最后將file,通過(guò)ajax請(qǐng)求做為參數(shù)傳給服務(wù)器就可以了
return file 
}

以上就是關(guān)于“Vue怎么引入sign-canvas實(shí)現(xiàn)簽名畫(huà)板效果”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

vue
AI