vue 使用 canvas 實(shí)現(xiàn)手寫電子簽名

時(shí)隔三年的更新F∷!支持vue3

  • 支持vue32斩弧1渎狻!芭逝!更新依賴后塌碌,僅bgColor原來(lái)的.sync修飾符需改為vue3寫法v-model:bgColor;
  • 新增屬性 isClearBgColor,默認(rèn)值true旬盯, 清空畫布時(shí)(reset)是否同時(shí)清空設(shè)置的背景色(bgColor) 台妆;
  • 直接npm install vue-esign@latest --save即可,對(duì)vue2版本無(wú)任何影響胖翰;

功能

  1. 兼容 PC 和 Mobile接剩;
  2. 畫布自適應(yīng)屏幕大小變化(窗口縮放、屏幕旋轉(zhuǎn)時(shí)畫布無(wú)需重置萨咳,自動(dòng)校正坐標(biāo)偏移)懊缺;
  3. 自定義畫布尺寸(導(dǎo)出圖尺寸),畫筆粗細(xì)培他、顏色鹃两,畫布背景色遗座;
  4. 支持裁剪 (針對(duì)需求:有的簽字需要裁剪掉四周空白)。
  5. 導(dǎo)出圖片格式為 base64俊扳;
  6. 示例demo

安裝

npm install vue-esign --save

使用

  1. 全局使用 员萍、局部
// 全局 vue2 main.js
import vueEsign from 'vue-esign'
Vue.use(vueEsign)
// 全局vue3 main.js
import { createApp } from 'vue'
import App from './App.vue'
import vueEsign from 'vue-esign'
const app = createApp(App)
app.use(vueEsign)
// 局部
import vueEsign from 'vue-esign'
components: { vueEsign }
  1. 頁(yè)面中使用
    必須設(shè)置 ref ,用來(lái)調(diào)用組件的兩個(gè)內(nèi)置方法 reset()generate()

無(wú)需給組件設(shè)置 style 的寬高拣度,如果畫布的 width屬性值沒(méi)超出父元素的樣式寬度碎绎,則該組件的樣式寬度就是畫布寬度,超出的話抗果,組件樣式寬度則是父元素的100%筋帖; 所以只需設(shè)置好父元素的寬度即可;

<!-- vue2 -->
<vue-esign ref="esign" :width="800" :height="300" :isCrop="isCrop" :lineWidth="lineWidth" :lineColor="lineColor" :bgColor.sync="bgColor" />
<!-- vue3 -->
<vue-esign ref="esign" :width="800" :height="300" :isCrop="isCrop" :lineWidth="lineWidth" :lineColor="lineColor" v-model:bgColor="bgColor" />

<!-- isClearBgColor為false時(shí)冤馏,不必再給bgColor加sync修飾符或v-model -->

<button @click="handleReset">清空畫板</button> 
<button @click="handleGenerate">生成圖片</button>
data () {
  return {
    lineWidth: 6,
    lineColor: '#000000',
    bgColor: '',
    resultImg: '',
    isCrop: false
  }
},
methods: {
  handleReset () {
    this.$refs.esign.reset()
  },
  handleGenerate () {
    this.$refs.esign.generate().then(res => {
      this.resultImg = res
    }).catch(err => {
      alert(err) // 畫布沒(méi)有簽字時(shí)會(huì)執(zhí)行這里 'Not Signned'
    })
  }
}
  1. 說(shuō)明
屬性 類型 默認(rèn)值 說(shuō)明
width Number 800 畫布寬度日麸,即導(dǎo)出圖片的寬度
height Number 300 畫布高度,即導(dǎo)出圖片的高度
lineWidth 4 Number 畫筆粗細(xì)
lineColor String #000000 畫筆顏色
bgColor String 畫布背景色逮光,為空時(shí)畫布背景透明代箭,<br />支持多種格式 '#ccc','#E5A1A1'涕刚,'rgb(229, 161, 161)'嗡综,'rgba(0,0,0,.6)','red'
isCrop Boolean false 是否裁剪杜漠,在畫布設(shè)定尺寸基礎(chǔ)上裁掉四周空白部分
isClearBgColor Boolean true 清空畫布時(shí)(reset)是否同時(shí)清空設(shè)置的背景色(bgColor)

兩個(gè)內(nèi)置方法极景,通過(guò)給組件設(shè)置 ref 調(diào)用:

清空畫布

this.$refs.esign.reset()

生成圖片

this.$refs.esign.generate().then(res => {
  console.log(res) // base64圖片
}).catch(err => {
  alert(err) // 畫布沒(méi)有簽字時(shí)會(huì)執(zhí)行這里 'Not Signned'
})

有任何問(wèn)題請(qǐng)到此提issue 倉(cāng)庫(kù)地址

演示.gif

版權(quán)聲明:本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處 http://www.reibang.com/p/cfb9d5998cd6

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載驾茴,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者盼樟。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锈至,隨后出現(xiàn)的幾起案子晨缴,更是在濱河造成了極大的恐慌,老刑警劉巖峡捡,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件击碗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡棋返,警方通過(guò)查閱死者的電腦和手機(jī)延都,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門雷猪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)睛竣,“玉大人,你說(shuō)我怎么就攤上這事求摇∩涔担” “怎么了殊者?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)验夯。 經(jīng)常有香客問(wèn)我猖吴,道長(zhǎng),這世上最難降的妖魔是什么挥转? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任海蔽,我火速辦了婚禮,結(jié)果婚禮上绑谣,老公的妹妹穿的比我還像新娘党窜。我一直安慰自己,他們只是感情好借宵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布幌衣。 她就那樣靜靜地躺著,像睡著了一般壤玫。 火紅的嫁衣襯著肌膚如雪豁护。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天欲间,我揣著相機(jī)與錄音楚里,去河邊找鬼。 笑死猎贴,一個(gè)胖子當(dāng)著我的面吹牛腻豌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嘱能,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吝梅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了惹骂?” 一聲冷哼從身側(cè)響起苏携,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎对粪,沒(méi)想到半個(gè)月后右冻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡著拭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年纱扭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片儡遮。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乳蛾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肃叶,我是刑警寧澤蹂随,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站因惭,受9級(jí)特大地震影響岳锁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蹦魔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一激率、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧勿决,春花似錦柱搜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至表制,卻和暖如春健爬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背么介。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工娜遵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人壤短。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓设拟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親久脯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纳胧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355