如何利用VBS来实现两个bmp格式的图片通过像素进行对比?求高人指点!!!
用下面的代码试了一下,提示fColor1 = mybmp1.Point(X, Y)的Point无法执行,换成abs也不行Dim mybmp1
Dim mybmp2
Set mybmp1 = LoadPicture ("c:\lcd.bmp")
Set mybmp2 = LoadPicture ("c:\lcd1.bmp")
msgbox mybmp1.Height
msgbox mybmp1.Width
For Y = 0 To mybmp1.Height
For X = 0 To mybmp2.Width
fColor1 = mybmp1.Point(X, Y)
fColor2 = mybmp2.Point(X, Y)
if fColor1<>fColor2 then
msgbox "不一样!"
End If
Next 'X
Next 'Y
用下面的代码试了一下,提示fColor1 = mybmp1.Point(X, Y)的Point无法执行,换成abs也不行Dim mybmp1
Dim mybmp2
Set mybmp1 = LoadPicture ("c:\lcd.bmp")
Set mybmp2 = LoadPicture ("c:\lcd1.bmp")
msgbox mybmp1.Height
msgbox mybmp1.Width
For Y = 0 To mybmp1.Height
For X = 0 To mybmp2.Width
fColor1 = mybmp1.Point(X, Y)
fColor2 = mybmp2.Point(X, Y)
if fColor1<>fColor2 then
msgbox "不一样!"
End If
Next 'X
Next 'Y
2,将数据读到两个byte数组中
3,异或
……
这是最快的算法了~~
我是在QTP9.5中编写和运行的,应该是VBScript吧?那用picturebox控件如何运用,能详细说下么?谢谢!
可能二进制才是你的最佳选择,给定一个bmp图片的二进制数据里面是包含图片的长度和宽度等信息的
获取到长度和宽度后你就可以知道每行有多少个点 每列有多少个点了,定义一个对应的二维数组pp(w,h)获取图片数据,这样想比较哪个点直接就可以比较这两张图片的pp数组了 能间接实现point方法的效果
st.Type = 1
st.Mode = 3
st.open()
'加载图片二进制流,并读取图片头信息
st.LoadFromFile(picName)
st.position = 10
'获取数据偏移
dataOff = BinVal(st.read(4))
st.read(4)
'图片宽、高(象素)
imgW = BinVal(st.read(4))
imgH = BinVal(st.read(4))
Dim mybmp1 As Object Dim mybmp2 As Object Set mybmp1 = CreateObject("wia.ImageFile")
Set mybmp2 = CreateObject("wia.ImageFile")
mybmp1.loadfile "d:\3.jpg"
mybmp2.loadfile "d:\2.jpg"
Dim fColor1 As Long, fColor2 As Long
Dim x As Long, y As Long
Dim v1 As Object, v2 As Object
Set v1 = CreateObject("wia.vector")
Set v2 = CreateObject("wia.vector")
Set v1 = mybmp1.argbdata
Set v2 = mybmp2.argbdata
For y = 1 To mybmp1.height
For x = 1 To mybmp1.width
fColor1 = v1.Item(x + (y - 1) * mybmp1.width)
fColor2 = v2.Item(x + (y - 1) * mybmp2.width) If fColor1 <> fColor2 Then
msgbox Str(x) & Str(y) & "不一样!"
End If
Next 'X
Next 'Y
如果图片较大,还是算了吧,超慢
这个帖子给的分数太少了,你去下面的网址,回个帖子;我就结贴了;
http://topic.csdn.net/u/20110223/11/ced07389-d4b1-4167-9fbb-7d882e73274f.html