06-08-16, 03:55 PM
(06-08-16, 01:10 PM)silverlight كتب : مقارنة الصور يعتر من الأشياء السهلة و الصعبة في نفس الوقت و هذا يحدده أسبابك في مقارنة الصور
عموما كما أشار عليك الأخ محمد كريم أحد الأساليب لمقارنة الصور هو تحويل الصورة الي مصفوفة من 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
شكرا لك
