国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在C#中快速比對圖片的新方法

2019-11-17 04:10:58
字體:
來源:轉載
供稿:網友

MSDN的一位技術人員告訴大家一個在C#中進行圖像一致性比較的簡易算法。一般的情況下,人們習慣的輪詢圖像中的每一個像素進行比對,如果出現一個像素點的不同則判斷兩張照片不一致。但這樣做的缺點是顯而易見的:大量的查詢會顯著拖慢系統速度,如果要比較的圖像很多則可能導致系統掛掉。新的思路是把圖像文件的數據流轉化成一串Base64字串,然后只要比較這些字串就可以了。作者測試了256*256以下大小的一些圖片,結果完全正確而且速度明顯加快。來看他是如何實現的吧。

傳統的像素比對方法:

   1: PRivate bool ImageCompareArray(Bitmap firstImage, Bitmap secondImage) 
   2: {
   3:     bool flag = true;
   4:     string firstPixel;
   5:     string secondPixel;
   6:  
   7:     if (firstImage.Width == secondImage.Width 
   8:         && firstImage.Height == secondImage.Height)
   9:     {
  10:         for (int i = 0; i < firstImage.Width; i++)
  11:         {
  12:             for (int j = 0; j < firstImage.Height; j++)
  13:             {
  14:                 firstPixel = firstImage.GetPixel(i, j).ToString();
  15:                 secondPixel = secondImage.GetPixel(i, j).ToString();
  16:                 if (firstPixel != secondPixel)
  17:                 {
  18:                     flag = false;
  19:                     break;
  20:                 }
  21:             }
  22:         }
  23:  
  24:         if (flag == false)
  25:         {
  26:             return false;
  27:         }
  28:         else
  29:         {
  30:             return true;
  31:         }
  32:     }
  33:     else
  34:     {
  35:         return false;
  36:     }
  37: }

改良后的代碼:

   1: public static bool ImageCompareString(Bitmap firstImage, Bitmap secondImage)
   2: {
   3:     MemoryStream ms = new MemoryStream();
   4:     firstImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
   5:     String firstBitmap = Convert.ToBase64String(ms.ToArray());
   6:     ms.Position = 0;
   7:  
   8:     secondImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
   9:     String secondBitmap = Convert.ToBase64String(ms.ToArray());
  10:  
  11:     if (firstBitmap.Equals(secondBitmap))
  12:     {
  13:         return true;
  14:     }
  15:     else
  16:     {
  17:         return false;
  18:     }
  19: }

作者測試了大量圖片,只要改動一個像素點,新方法都可以檢測出不同。不過目前為止還沒有對500*600分辨率以上的圖像進行測試。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 从江县| 莆田市| 阿克| 天等县| 芷江| 大埔县| 剑河县| 乌拉特中旗| 晋州市| 吴江市| 苍溪县| 五原县| 萍乡市| 恩平市| 安塞县| 木里| 搜索| 苍南县| 沈阳市| 中超| 黔西| 竹山县| 忻州市| 紫阳县| 永新县| 宜兰县| 三门峡市| 望谟县| 伊金霍洛旗| 康平县| 克东县| 博兴县| 资源县| 韩城市| 贡嘎县| 沂源县| 苗栗市| 关岭| 资中县| 盈江县| 兴和县|