VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



Code that scans pixels of two given images to indicate whether they were identical or not

by Ward Jaradat (1 Submission)
Category: Graphics
Compatability: VB 6.0
Difficulty: Unknown Difficulty
Originally Published: Sat 3rd June 2006
Date Added: Mon 8th February 2021
Rating: (1 Votes)

Code that scans pixels of two given images to indicate whether they were identical or not

Rate Code that scans pixels of two given images to indicate whether they were identical or not



' This code was designed by Ward Jaradat
'
' E-mail & MSN Messanger Handler:
[email protected]
'
' Website:
' http://wardgalactica.blogspot.com


'---------------------------------------------
' This code's purpose is to scan two given
' images' pixels to find out if they were
' identical or not!
'---------------------------------------------

Option Explicit

Public Enum myColor ' RGB Color Values
    R As Long
    G As Long
    B As Long
End Enum

Public Enum myResults
    T As Long ' for total pixels
    I As Long ' for identical pixels
    N As Long ' for non-identical pixels
    P As Long ' for how much percent the two images are identical
End Enum

Public Result As myResults

' Information:

' this code works on 16bpp format for images, actually i would like
' to make some points clear regarding this issue:
'
'  ----------------------------------------------------------------------
'
'  * RGB 5:5:5 is the default format so its actually 15bpp where the
'    top bit is alwayz empty or not used!
'
'  * In this format 16bpp, each of the Red, Green, & Blue
'    color components is presented by a 5 bit number giving
'    32 different levels of each and 32786 possible different
'    colors in total; which means that the true 16bpp would be
'    RGB 5:6:5 where there are 65536 possible colors!
'
'  * There is no palette used to define the colors for the 16bpp images
'    however the Red, Green, & Blue values in the pixel are used to
'    define the colors directly!
'
'  ----------------------------------------------------------------------
'  However if u like to know more about RGB formats u could do some search
'  on google or something... :D
'
Public Function ScanPixels(myPic1 As PictureBox, myPic2 As PictureBox)

Dim PointX As Long
Dim PointY As Long

Dim X As Long
Dim Y As Long

Dim ColorX As myColor
Dim ColorY As myColor

' Note that the resolution of myPic1 & myPic2 should be identical
If Not (myPic1.Height = myPic2.Height) Then
    Exit Function
ElseIf Not (myPic1.Width = myPic2.Width) Then
    Exit Function
End If

Do Until (Y > myPic1.Height)

        PointX = Picture1.Point(X, Y)
        PointY = Picture2.Point(X, Y)
        
        myRGB PointX, ColorX.R, ColorX.G, ColorX.B
        myRGB PointY, ColorY.R, ColorY.G, ColorY.B
        
    
        If (ColorX.R = ColorY.R) And (ColorX.G = ColorY.G) And (ColorX.B = ColorY.B) Then
            Result.I = Result.I + 1
        Else
            Result.N = Result.N + 1
        End If
        
        Result.T = Result.T + 1
        
        X = X + 15 ' why 15? check the information above!
        
        If X > myPic1.Width Then
            X = 0
            Y = Y + 15
        End If
        
Loop

Result.P = (100 - ((Result.N / Result.T) * 100))

End Function

Public Function myRGB(ByVal myPoint As Long, Red As Long, Green As Long, Blue As Long)
    
    G = Int(ColorValue / 65536)
    B = Int((ColorValue - (65536 * G)) / 256)
    R = ColorValue - (65536 * G + 256 * B)
    
    ' However, just if u wanna know how to get RGB values in the reverse order
    ' of bytes u could return the value of the following code:
    '
    ' CLng(blue + (green * 256) + (red * 65536)
    '
    ' I did truly find that useful in making other functions regarding RGB :D
    
End Function

Download this snippet    Add to My Saved Code

Code that scans pixels of two given images to indicate whether they were identical or not Comments

No comments have been posted about Code that scans pixels of two given images to indicate whether they were identical or not. Why not be the first to post a comment about Code that scans pixels of two given images to indicate whether they were identical or not.

Post your comment

Subject:
Message:
0/1000 characters