欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用C#校驗(yàn)畫布簽名圖片是否為空白

 更新時(shí)間:2024年11月20日 08:40:39   作者:初九之潛龍勿用  
這篇文章主要為大家詳細(xì)介紹了如何使用C#校驗(yàn)畫布簽名圖片是否為空白,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

需求分析

我的文章《C# WinForm實(shí)現(xiàn)畫筆簽名及解決MemoryBmp格式問題》主要介紹如何通過 C# WinForm 通過畫布畫筆實(shí)現(xiàn)手寫簽名,簽名后的圖片將根據(jù)需要保存在數(shù)據(jù)庫中,現(xiàn)有一需求,即判斷用戶是否在畫布上進(jìn)行了簽名,是否有值。我們可以通過如下方法進(jìn)行判斷或聯(lián)合判斷:

(1)對(duì)生成的目標(biāo)圖片進(jìn)行像素顏色值判斷,是否為純白色的圖片(應(yīng)用程序默認(rèn)的畫布即為純白色背景圖片),如果有一個(gè)像素不是純白色即為有值。

(2)在應(yīng)用生成的默認(rèn)目標(biāo)圖片,如果未簽名的話,樣例輸出為6K字節(jié)大小,我們將以此為基準(zhǔn)判斷簽名后的合理字節(jié)大小值,如下圖:

通過合理樣例統(tǒng)計(jì),簽過名的圖片大小基本在10K字節(jié)以上,因此通過簡(jiǎn)單的大小比對(duì)方式也可以判斷圖片中是否有值(簽名)。

(3)通過 PaddleOCRSharp 庫對(duì)生成的目標(biāo)圖片進(jìn)行文字識(shí)別,如果能夠提取到文字,則也可以判斷圖片中是否有值(簽名)。

開發(fā)運(yùn)行環(huán)境

操作系統(tǒng): Windows Server 2019 DataCenter

手寫觸屏設(shè)備:Microsoft Surface Pro 9

.net版本: .netFramework4.7.2 

開發(fā)工具:VS2019  C#

實(shí)現(xiàn)

假設(shè)有目標(biāo)生成圖片地址為 d:\white1.jpg

像素值判斷法

示例代碼如下:

System.Drawing.Bitmap validImage = new System.Drawing.Bitmap("d:\\white1.jpg");
bool isWhite = true;
for (int x = 0; x < validImage.Width; x++)
{
     for (int y = 0; y < validImage.Height; y++)
     {
          System.Drawing.Color color = validImage.GetPixel(x, y);
          if (color.R != 255||color.G!=255||color.B!=255)
          {
              isWhite = false;
              break;
          }
     }
     if (isWhite == false)
     {
         break;
     }
 
}
MessageBox.Show(isWhite.ToString());
validImage.Dispose();

讀取目標(biāo)圖片,遍歷每一個(gè)像素值,如果某一個(gè)像素不是純白色,即退出循環(huán)。 

文件大小判斷法

示例代碼如下:

FileInfo fileInfo = new FileInfo("d:\\white1.jpg");
long fileSize = fileInfo.Length;
if(fileSize<10000)
MessageBox.Show("未簽名");

OCR識(shí)別法

可參閱我的文章 《C# 關(guān)于 PaddleOCRSharp OCR識(shí)別的疲勞測(cè)試》,示例代碼如下:

OCRModelConfig config = null;
OCRParameter oCRParameter = new OCRParameter();
PaddleOCREngine engi = null;
OCRResult ocrResult = new OCRResult();
var imagebyte = File.ReadAllBytes("d:\\white1.jpg");
 
    oCRParameter.cpu_math_library_num_threads = 10;// 預(yù)測(cè)并發(fā)線程數(shù)
    oCRParameter.enable_mkldnn = false; // web部署該值建議設(shè)置為0,否則出錯(cuò),內(nèi)存如果使用很大,建議該值也設(shè)置為0.
    oCRParameter.cls = false; // 是否執(zhí)行文字方向分類;默認(rèn)false
    oCRParameter.use_angle_cls = false; // 是否開啟方向檢測(cè),用于檢測(cè)識(shí)別180旋轉(zhuǎn)
    oCRParameter.det_db_score_mode = false; // 是否使用多段線,即文字區(qū)域是用多段線還是用矩形
    oCRParameter.det_db_unclip_ratio = 1.6f;
            
engi = new PaddleOCREngine(config, oCRParameter);
 
ocrResult = engi.DetectText(imagebyte);
string ocrText="";
if (ocrResult != null)
{
   ocrText=ocrResult.Text;
}
if(ocrText=="")
   MessageBox.Show("未識(shí)別出文字");

小結(jié)

本示例是結(jié)合應(yīng)用實(shí)例的舉例,判斷圖片是否有值或簽名,可能需要聯(lián)合判斷或按照您實(shí)際的情況進(jìn)行應(yīng)用開發(fā),如基礎(chǔ)空白圖片的特質(zhì),大小等。

到此這篇關(guān)于使用C#校驗(yàn)畫布簽名圖片是否為空白的文章就介紹到這了,更多相關(guān)C#校驗(yàn)畫布簽名是否空白內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#多線程編程中導(dǎo)致死鎖的常見陷阱和避免方法

    C#多線程編程中導(dǎo)致死鎖的常見陷阱和避免方法

    在C#多線程編程中,死鎖(Deadlock)是一種常見的、令人頭疼的錯(cuò)誤,死鎖通常發(fā)生在多個(gè)線程試圖獲取多個(gè)資源的鎖時(shí),導(dǎo)致相互等待對(duì)方釋放資源,最終形成一個(gè)循環(huán)依賴,造成程序無法繼續(xù)執(zhí)行,本文將深入探討C#多線程編程中導(dǎo)致死鎖的常見陷阱,并幫助你避免這些坑
    2025-02-02
  • c# Winform自定義控件-儀表盤功能

    c# Winform自定義控件-儀表盤功能

    這篇文章主要介紹了c#Winform自定義控件-儀表盤功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • C#泛型與非泛型性能比較的實(shí)例

    C#泛型與非泛型性能比較的實(shí)例

    C#泛型與非泛型性能比較的實(shí)例,需要的朋友可以參考一下
    2013-04-04
  • c# 讀取XML文件的示例

    c# 讀取XML文件的示例

    這篇文章主要介紹了c# 讀取XML文件的示例,幫助大家更好的理解和使用c# 編程語言,感興趣的朋友可以了解下。
    2020-11-11
  • C#?LiteDB基本使用示例代碼

    C#?LiteDB基本使用示例代碼

    LiteDB是一種文檔型單文件數(shù)據(jù)庫,基于Key-Value方式存取數(shù)據(jù),LiteDB?的靈感來自?MongoDB?數(shù)據(jù)庫,所以它的?API?和?MongoDB?的?.NET?API?非常相似,這篇文章主要介紹了C#?LiteDB基本使用,需要的朋友可以參考下
    2024-03-03
  • 使用Cursor進(jìn)行C#編程的詳細(xì)步驟

    使用Cursor進(jìn)行C#編程的詳細(xì)步驟

    Cursor 是一款功能強(qiáng)大的代碼編輯器,它憑借其人工智能輔助功能,為開發(fā)者帶來了諸多便利,本文將給大家介紹了用Cursor 進(jìn)行C#編程的超詳細(xì)指南,需要的朋友可以參考下
    2025-03-03
  • C#生成設(shè)置范圍內(nèi)的Double類型隨機(jī)數(shù)的方法

    C#生成設(shè)置范圍內(nèi)的Double類型隨機(jī)數(shù)的方法

    這篇文章主要介紹了C#生成設(shè)置范圍內(nèi)的Double類型隨機(jī)數(shù)的方法,對(duì)于C#的初學(xué)者有很好的借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • C#子類對(duì)基類方法的繼承、重寫與隱藏詳解

    C#子類對(duì)基類方法的繼承、重寫與隱藏詳解

    這篇文章主要介紹了C#子類對(duì)基類方法的繼承、重寫與隱藏的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C#定時(shí)關(guān)閉窗體實(shí)例

    C#定時(shí)關(guān)閉窗體實(shí)例

    這篇文章主要介紹了C#定時(shí)關(guān)閉窗體實(shí)例,在Windows桌面應(yīng)用程序開發(fā)中具有一定的實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C#中txt數(shù)據(jù)寫入的幾種常見方法

    C#中txt數(shù)據(jù)寫入的幾種常見方法

    這篇文章主要給大家介紹了關(guān)于C#中txt數(shù)據(jù)寫入的幾種常見方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評(píng)論