如何比较两个.jpg文件或.gif文件是不是一样?
比如a.jpg就是一个“1”的图片,而b.jpg就是“2”的图片,c.jpg是一个“1”的图片。
请问:如何比较a.jpg不同于b.jpg,而和c.jpg相同?
对于其它的格式,如.gif等呢?请教请教!

解决方案 »

  1.   

    比较仅限于.bmp,.jpg,.bmp等VB中PictureBox支持打开的图象/图形格式文件.[假设比较2张图片是否是一张图片]
    第1步:
        声明API
        Public Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
    Public Declare Function SetPixel Lib "gdi32" Alias "SetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
       
        在窗体中拖入两个PictureBox控件.
      
    第2步:
       PictureBox1.AutoRedraw=True:PictureBox2.AutoRedraw=True
       PictureBox1.ScaleMode=3:PictureBox2.ScaleMode=3
       Set PictureBox1.Picture=LoadPicture("c:\图片文件名1.jpg")
       Set PictureBox2.Picture=LoadPicture("c:\图片文件名2.gif")
       
    第3步:(正式比较)
    Public Declare Function ComparePic() as Boolean
       Dim I as long,J as long,Temp as long
       '两张图象的大小必须一致
       If PictureBox1.ScaleWidth<>PictureBox2.ScaleWidth or PictureBox1.ScaleHeight<>PictureBox2.ScaleHeight Then
           ComparePic=False:Exit Function
       End If   '挨个象素比较图片(这个过程的速度主要看你比较图象的大小)
       For J=0 To PictureBox1.ScaleHeight
           For I=0 To PictureBox1.ScaleWidth
               Temp=GetPixel(PictureBox1.hdc,I,J)
               If GetPixel(PictureBox1.hdc,I,J) <> GetPixel(Picture2.hdc,I,J) Then
                    ComparePic=False:Exit Function'不相同,退出比较,返回值
               End If
           Next
       Next
       ComparePic=True'一样的图片
    End Function
           
    明白了么?这是最简单的方法了
      

  2.   

    谢谢楼上大侠!
    请教:能不能不要引入Picturebox控件,只是知道文件名称如:c:\a.jpg,c:\b.jpg,c:\c.jpg,这样就可以比较文件是不是相同了?
    谢谢先!
      

  3.   

    很难!
    除非你对jpg文件格式很了解然后读取出来
    在内存中逐象素比较。