C# 判斷兩張圖片是否一致,極快速


#region 判斷圖片是否一致
       /// <summary>
       /// 判斷圖片是否一致
       /// </summary>
       /// <param name="img">圖片一
       /// <param name="bmp">圖片二
       /// <returns>是否一致</returns>
       public bool IsSameImg(Bitmap img, Bitmap bmp)
       {
           //大小一致
           if (img.Width == bmp.Width && img.Height == bmp.Height)
           {
               //將圖片一鎖定到內存
               BitmapData imgData_i = img.LockBits(new Rectangle(0, 0, img.Width, img.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
               IntPtr ipr_i = imgData_i.Scan0;
               int length_i = imgData_i.Width * imgData_i.Height * 3;
               byte[] imgValue_i = new byte[length_i];
               Marshal.Copy(ipr_i, imgValue_i, 0, length_i);
               img.UnlockBits(imgData_i);
               //將圖片二鎖定到內存
               BitmapData imgData_b = img.LockBits(new Rectangle(0, 0, img.Width, img.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
               IntPtr ipr_b = imgData_b.Scan0;
               int length_b = imgData_b.Width * imgData_b.Height * 3;
               byte[] imgValue_b = new byte[length_b];
               Marshal.Copy(ipr_b, imgValue_b, 0, length_b);
               img.UnlockBits(imgData_b);
               //長度不相同
               if (length_i != length_b)
               {
                   return false;
               }
               else
               {
                   //循環判斷值
                   for (int i = 0; i < length_i; i++)
                   {
                       //不一致
                       if (imgValue_i[i] != imgValue_b[i])
                       {
                           return false;
                       }
                   }
                   return true;
               }
           }
           else
           {
               return false;
           }
       }
       #endregion

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM