06-08-16, 01:10 PM
مقارنة الصور يعتر من الأشياء السهلة و الصعبة في نفس الوقت و هذا يحدده أسبابك في مقارنة الصور
عموما كما أشار عليك الأخ محمد كريم أحد الأساليب لمقارنة الصور هو تحويل الصورة الي مصفوفة من bytes
ويمكنك ان تستخدم الدالة التالية لتحويل الصورة الي مصفوفة من Bytes
و يمكنك أن تستخدم الدالة التالية لتقارن بها الصور
الكود التالي يوضح كيفية استخدام الدالة للمقارنة بين صورتين كل منهما موجودة في PictureBox
عموما كما أشار عليك الأخ محمد كريم أحد الأساليب لمقارنة الصور هو تحويل الصورة الي مصفوفة من bytes
ويمكنك ان تستخدم الدالة التالية لتحويل الصورة الي مصفوفة من Bytes
كود :
Private Function ConvertToBytes(bmp As Bitmap) As Byte()
Dim rect As Rectangle = New Rectangle(0, 0, bmp.Width, bmp.Height)
Dim data As Imaging.BitmapData = bmp.LockBits(rect, Imaging.ImageLockMode.ReadOnly, Imaging.PixelFormat.Format32bppArgb)
Dim bytes As Byte() = New Byte(data.Stride * data.Height - 1) {}
Runtime.InteropServices.Marshal.Copy(data.Scan0, bytes, 0, bytes.Length)
bmp.UnlockBits(data)
Return bytes
End Functionو يمكنك أن تستخدم الدالة التالية لتقارن بها الصور
كود :
Private Function IsImageEqual(firstImage As Image, secondImage As Image) As Boolean
Dim left As Byte() = ConvertToBytes(firstImage)
Dim right As Byte() = ConvertToBytes(secondImage)
If left.Length < right.Length Then
Return False
End If
For i As Integer = 0 To right.Length - 1
If left(i) <> right(i) Then
Return False
End If
Next
Return True
End Functionالكود التالي يوضح كيفية استخدام الدالة للمقارنة بين صورتين كل منهما موجودة في PictureBox
كود :
If IsImageEqual(PictureBox1.Image, PictureBox2.Image) Then
MessageBox.Show("images are equals")
Else
MessageBox.Show("images are Not equals")
End If
