Search code examples
vb.netembedded-resourcepicturebox

Check A Picturebox For A Specific Image Name


I need to check a picturebox for a specific image. I know you can check if the picturebox is populated with an image...

If Not pictureBox.Image is Nothing Then

Else

End If

But in my case, I need to check this picturebox for an image I loaded earlier on in the process.

Here is the current code I'm using to load the image...

PictureBox1.Image = My.Resources.TestImage1

I thought by using the following code I could check the image name, but this apparently does not work.

If PictureBox1.Image = My.Resources.TestImage1 Then
  'do something
Else
  'do something else
End if

Suggestions?


Solution

  • Image does not have any knowledge of the file name or any other name that it has been loaded from. What you can do, however, is compare images pixel-by-pixel. Try this code:

    Public Function AreSameImage(ByVal I1 As Image, ByVal I2 As Image) As Boolean
      Dim BM1 As Bitmap = I1
      Dim BM2 As Bitmap = I2
      For X = 0 To BM1.Width - 1
        For y = 0 To BM2.Height - 1
          If BM1.GetPixel(X, y) <> BM2.GetPixel(X, y) Then
            Return False
          End If
        Next
      Next
      Return True
    End Function
    

    Credit goes here.

    A useful article I found when looking for this answer:

    This is how you can check if your images are less than 100% equal, i.e. similar.