51Testing软件测试论坛

标题: 图片比较 [打印本页]

作者: adong1982    时间: 2008-8-19 18:16
标题: 图片比较
最近在写图片比较脚本时,遇到问题.
我的设计思路是如果两个文件二进制比较不同,则认为图片内容不同.

但是在测试过程中发现,我写的函数, 当图片不同时,二进制比较竟然相同.


脚本如下
'*********************************

   Function  Compare   (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<>true  and 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
   
  If  Flag=0  Then   
      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都只有一行一列, 我很困惑
作者: koala114    时间: 2008-8-20 13:50
你的函数没问题,我测下来可以分别出2张图片不一样,并输出False。
你大概在测的时候C盘下面没有back_icon1.bmp,和back_icon2.bmp吧?
如果没有这2个文件脚本会自动创建2个文件,所以比较下来2进制就一样了。

至于你说只有一行一列的问题,我debug下来发现readline这个函数是读取文件中的一行数据,也就是以回车判断是否一行,BMP文件格式里面有可能没有换行符所以认为整个文件就是一行。
作者: adong1982    时间: 2008-8-20 14:34
谢谢楼上的回答.

我困惑的地方在于:
1. 正如你说,返回Flase.  
    你是否注意到,此时,DEBUG VIEW中 MYFILE和MYFILE2创建时, colume 并不是1

2.  而当出现错误,返回true时
     DEBUG VIEW 中  MYFILE和MYFILE2创建时, colume 显示为1

我担心指针在MYFILE 和MYFILE1 创建时,就直接指到最后一行,导致只比较两个文件的最后一行,相同,因此返回true
我用UC二进制对比过了,最后一行是一样的.

我想知道如果readline后, 如何可以将指针跳回刚才已读的那行
作者: koala114    时间: 2008-8-20 14:52
我这里debug时看到MyFile喝MyFile1创建时Column就是1,看图




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2