vue中判斷canvas畫布是否為空

當我們通過canvas創(chuàng)建畫布,即使未做任何操作,未畫一筆,我們也能成功導(dǎo)出base64。很多場景下我們需要判斷畫布是否為空,這個時候可以初始化一個模版來比較,網(wǎng)上的方法也有多:


//驗證canvas畫布是否為空
function isCanvasBlank(canvas) {
    var blank = document.createElement('canvas');//系統(tǒng)獲取一個空canvas對象
    blank.width = canvas.width;
    blank.height = canvas.height;
    return canvas.toDataURL() == blank.toDataURL();//比較值相等則為空
}
//調(diào)用
//非空驗證
function checkEmpty() {
    var c=document.getElementById("canvas"); // 獲取html的canvas對象
    if(isCanvasBlank(c)){
        alert("請繪制");
        return;
    }
});

但往往我們創(chuàng)建畫布,并不只是簡單的畫幾條線,可能有很多配置,比如線寬、線速、填充色,功能越復(fù)雜配置就越復(fù)雜,那么就需要在isCanvasBlank方法中全部初始化出來,那就顯得繁瑣了。

因此我們可以在頁面掛載的時候保存一份初始化數(shù)據(jù)(vue開發(fā))。
  • 在mounted周期里獲取初始的Base64,一定是要在mounted里面,created周期canvas還未掛載,無法獲取到實例;
mounted () {
    this.toDataURL = this.$refs.SignCanvas.canvas.toDataURL()
  },
  • 在你需要做判斷的時候再次獲取當前canvas導(dǎo)出的Base64與mounted中保存的作比較:
if (this.toDataURL === this.$refs.SignCanvas.canvas.toDataURL()) {
        this.$toast('請先簽名')
        return
      }

關(guān)于toDataURL屬性,你可以參考MDN

HTMLCanvasElement.toDataURL() 方法返回一個包含圖片展示的 data URI ??梢允褂?type 參數(shù)其類型,默認為 PNG 格式。圖片的分辨率為96dpi。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 方案背景 需求 1 需要對圖片進行標注,導(dǎo)出圖片。 2 需要標注N多圖片最后同時保存。 3 需要根據(jù)多邊形區(qū)域數(shù)據(jù)...
    軒_7ca0閱讀 5,697評論 0 1
  • 作者:心葉 時間:2019-05-29 22:31 > 本文檔非最新版本,會有更新延遲,如果希望獲取最新版本,請直...
    心葉_yelloxing閱讀 838評論 0 0
  • CSS CSS3 布局屬性 標簽的權(quán)值為1,類選擇符的權(quán)值為10,ID選擇符的權(quán)值最高為100 !importan...
    53cfdb355418閱讀 516評論 0 0
  • 第一章 HTML5 (2014年10月29日發(fā)布)新特性: 10個 (1)新的語義標簽 (2)增強型表單 (3)視...
    fastwe閱讀 1,030評論 0 1
  • 一:canvas簡介 1.1什么是canvas? ①:canvas是HTML5提供的一種新標簽 ②:HTML5 ...
    GreenHand1閱讀 4,878評論 2 32

友情鏈接更多精彩內(nèi)容