如何比较两个.jpg文件或.gif文件是不是一样?

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

请教请教!
...全文
40 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Garfield 2003-09-15
  • 打赏
  • 举报
回复
很难!
除非你对jpg文件格式很了解然后读取出来
在内存中逐象素比较。
imur 2003-09-15
  • 打赏
  • 举报
回复
谢谢楼上大侠!
请教:能不能不要引入Picturebox控件,只是知道文件名称如:c:\a.jpg,c:\b.jpg,c:\c.jpg,这样就可以比较文件是不是相同了?
谢谢先!
_131_ 2003-09-12
  • 打赏
  • 举报
回复
逐个象素的比较,厉害啊!
银河差不多!

深蓝都够呛啊!

考虑其他的方法吧!

而且这样做精度太高了,一个象素点的不同,两幅图就不同了!
可能那个象素点还是肉眼无法分辩的哟!
imur 2003-09-12
  • 打赏
  • 举报
回复
谢谢了!
还有没有高见?
要不就给分了!
Garfield 2003-09-12
  • 打赏
  • 举报
回复
哈哈,逐个象素比较。。。
我看只有这个办法了...
withpointer 2003-09-12
  • 打赏
  • 举报
回复
比较仅限于.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

明白了么?这是最简单的方法了
lxcc 2003-09-12
  • 打赏
  • 举报
回复
逐个byte比较
lxcc 2003-09-12
  • 打赏
  • 举报
回复
逐个byte的比较

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧