Visual Basic检查两个图像是相同还是不同

时间:2017-07-31 01:18:20

标签: vb.net image compare comparison bmp

所以我有一个程序可以在线下载图像,然后将它们存储在文件中。但是如果两个图像具有相同的名称,我有一段代码可以更改文件名,以便在末尾添加1,这样就没有错误。但是,我认为在重命名之前首先检查图像是否相同会更好。而且我还没有完全接近VB,因为我还没有制作我自己的图像比较代码,所以我看了谷歌并找到了这个代码,但问题是代码说2个相同的图像是不同的呢?如果有人能看看这个问题,我将非常感激。

编辑:为了进一步明确,我将我已经存储在我的文件夹中的图像与来自互联网的图像进行比较。

重新编辑:我发现我没有正确加载其中一个图像变量,如果有人知道我需要更改这会有什么帮助吗?因为我使图像变量相同以进行测试并且工作正常。

Dim image1 As Bitmap = New System.Drawing.Bitmap(New IO.MemoryStream(New System.Net.WebClient().DownloadData(picture)))
Dim image2 As Bitmap = CType(Image.FromFile(path + "\" + uname + ".png", True), Bitmap)
Dim a As Boolean = AreSameImage(image1, image2)
If a Then
    MsgBox("Identical image")
Else
    MsgBox("Different images")
End If

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

只是出于好奇,如果有人知道我怎么能这样做,以便它检查图像与特定文件夹中的所有文件 - 这将是非常有帮助的。再次感谢!

1 个答案:

答案 0 :(得分:0)

尝试像这样加载你的照片

Dim req As WebRequest = WebRequest.Create("http://www.google.co.il/Picture.jpg")
Dim stream As Stream = req.GetResponse().GetResponseStream()
Dim img As Image = Image.FromStream(stream)
Dim image1 As Bitmap = New Bitmap(img)

Image2的路径是否正确?