Ir para o conteúdo

Comparar Imagens

Uma das formas de comparar se duas imagens são iguais é convertendo as imagens, utilizando o método Convert.ToBase64String(), para uma string. Este método converte um array de 8-bit inteiros para a sua representação com base em 64 dígitos.

É um método muito simples para algumas aplicações onde é necessário comparar imagens.

Atenção: não confundir com tamanho, dimensão, etc.

Exemplo

    ''' <summary>
    ''' Converte a imagem para base 64
    ''' </summary>
    ''' <param name="image">Imagem a converter</param>
    ''' <param name="format">Formato da imagem</param>
    Public Function ImageToBase64String(ByVal image As Image, ByVal format As Imaging.ImageFormat) As String

        Dim base64String As String = String.Empty
        Using memory As New IO.MemoryStream()
            image.Save(memory, format)
            base64String = Convert.ToBase64String(memory.ToArray())
        End Using

        Return base64String
    End Function


    ' Verifica se as imagens são iguais ou não
    Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click

        ' Guarda as imagens em memória
        Dim img1 As Image = Image.FromFile("c:\image1.jpg")
        Dim img2 As Image = Image.FromFile("c:\image2.jpg")

        ' Converte as imagens para base 64
        Dim base64String1 As String = ImageToBase64String(img1, Imaging.ImageFormat.Jpeg)
        Dim base64String2 As String = ImageToBase64String(img2, Imaging.ImageFormat.Jpeg)

        ' Compara se as strings geração são iguais
        If base64String1 = base64String2 Then
            MessageBox.Show("As imagens são iguais")
        Else
            MessageBox.Show("As imagens são diferentes")
        End If

    End Sub