图片比较
最近在写图片比较脚本时,遇到问题.我的设计思路是如果两个文件二进制比较不同,则认为图片内容不同.
但是在测试过程中发现,我写的函数, 当图片不同时,二进制比较竟然相同.
脚本如下
'*********************************
FunctionCompare (arg1 ,arg2)
Const ForReading = 1, ForWriting = 2
Dim fso, MyFile,MyFile1
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.OpenTextFile(arg1, ForReading, True)
Set MyFile1 = fso.OpenTextFile(arg2, ForReading, True)
Flag=0
Dim tmp ,tmp1
tmp=0
tmp1=0
While MyFile.AtEndofLine<>trueand MyFile1.atendofline <>true
tmp=MyFile.readline
tmp1=MyFile1.readline
res=StrComp (tmp,tmp1,0)
If res<>0 Then
Flag=1
End If
Wend
MyFile.Close
MyFile1.Close
IfFlag=0Then
Compare=true
else
Compare= false
End If
End Function
path1="c:\back_icon1.bmp"
path2="c:\back_icon2.bmp"
msgbox compare (path1, path2)
补充一句:在debug过程中,我发现一个问题.
在set myfile 和myfile1 结束后,查看变量发现,myfile 和myfile1都只有一行一列, 我很困惑 你的函数没问题,我测下来可以分别出2张图片不一样,并输出False。
你大概在测的时候C盘下面没有back_icon1.bmp,和back_icon2.bmp吧?
如果没有这2个文件脚本会自动创建2个文件,所以比较下来2进制就一样了。
至于你说只有一行一列的问题,我debug下来发现readline这个函数是读取文件中的一行数据,也就是以回车判断是否一行,BMP文件格式里面有可能没有换行符所以认为整个文件就是一行。 谢谢楼上的回答.
我困惑的地方在于:
1. 正如你说,返回Flase.
你是否注意到,此时,DEBUG VIEW中 MYFILE和MYFILE2创建时, colume 并不是1
2.而当出现错误,返回true时
DEBUG VIEW 中MYFILE和MYFILE2创建时, colume 显示为1
我担心指针在MYFILE 和MYFILE1 创建时,就直接指到最后一行,导致只比较两个文件的最后一行,相同,因此返回true
我用UC二进制对比过了,最后一行是一样的.
我想知道如果readline后, 如何可以将指针跳回刚才已读的那行 我这里debug时看到MyFile喝MyFile1创建时Column就是1,看图
页:
[1]