Sub kkk() '比较速度很快的 Dim a() As Byte, b() As Byte t = Timer Open "c:\a.jpg" For Binary As 1 ReDim a(LOF(1) - 1) Get 1, , a Close 1 Open "d:\b.jpg" For Binary As 1 ReDim b(LOF(1) - 1) Get 1, , b Close 1 If StrComp(a, b) <> 0 Then MsgBox "不相等 " & Timer - t Else MsgBox "相等 " & Timer - t End If End Sub
看你的需求的:如果从文件数据上,那就简单了,直接用 Open 语句读取文件数据来对比就可以了。如果跨格式,如BMP、JPG、GIF、TIF...等从图像上进似的对比,那就从图形角度分析对比。 首先加载要对比的图片到GDI设备,然后从设备中取出图片数据的RGB字节流, 再根据定义的近似值来跳位取点判断色彩近似度是否相似。 建议跳格以8的倍数来跳,如8、16、24、32...,因为JPG是以8*8的单位压缩的, 可以行列都进行跳格取样,这样速度会快点,跳格幅度越大,速度越快,想对的,识别率也就越低。 还有,近似值设置得越大,兼容性越好,想对的,识别率也会越低。 控制好参数就可以做出不错的东西
http://topic.csdn.net/u/20100223/15/b7f7a12b-613d-4a1b-b783-bfb4109f2532.html?95105
6楼
'比较速度很快的
Dim a() As Byte, b() As Byte
t = Timer
Open "c:\a.jpg" For Binary As 1
ReDim a(LOF(1) - 1)
Get 1, , a
Close 1 Open "d:\b.jpg" For Binary As 1
ReDim b(LOF(1) - 1)
Get 1, , b
Close 1
If StrComp(a, b) <> 0 Then
MsgBox "不相等 " & Timer - t
Else
MsgBox "相等 " & Timer - t
End If
End Sub
首先加载要对比的图片到GDI设备,然后从设备中取出图片数据的RGB字节流,
再根据定义的近似值来跳位取点判断色彩近似度是否相似。
建议跳格以8的倍数来跳,如8、16、24、32...,因为JPG是以8*8的单位压缩的,
可以行列都进行跳格取样,这样速度会快点,跳格幅度越大,速度越快,想对的,识别率也就越低。
还有,近似值设置得越大,兼容性越好,想对的,识别率也会越低。
控制好参数就可以做出不错的东西