'笨办法,先把图片存成图片,再用Picture调用。 x = FreeFile Inet1.URL = "http://www.jcard.cn/Modules/LoginRandomImage.aspx" b() = Inet1.OpenURL(, icByteArray) Open "c:\tmp.bmp" For Binary Access Write As #x Put #x, , b() Close #x Picture1.Picture = LoadPicture("c:\tmp.bmp") '再用Picture1.Point(X, Y)调用图片每个像素的颜色值进行判断。因为这个网站的字体可以设置成黑色,而背景可以设置成白色,判断就容易了。 tmp = Picture1.Point(j, i) s1 = Trim(Hex(tmp)) 判断这个值的大小就能知道他是白色还是黑色,当然这个颜色有时有小量的偏差。需要调整。 再用每个字模的矩阵进行对比,得出结论。
新建一个工程,然后加入一个Picture1 控件,一个Inet1 控件,一个Text1 控件,然后把下面代码拷贝,再点击Picture1控件,再看看Text1中的内容,你就清楚怎么做了。因为你这个网站的很容易识别,如果是其它的加入了噪点的就难些。Private Sub Picture1_Click() Dim b() As Byte x = FreeFile Inet1.URL = "http://www.jcard.cn/Modules/LoginRandomImage.aspx" b() = Inet1.OpenURL(, icByteArray) Open "c:\tmp.bmp" For Binary Access Write As #x Put #x, , b() Close #x Picture1.Picture = LoadPicture("c:\tmp.bmp") Text1.Text = "" For i = 5 To 13 tt = "" For j = 0 To 39 If Picture1.Point(j, i) <> 16777215 Then ' tt = tt & "1" Else tt = tt & " " End If Next Text1.Text = Text1.Text & tt & Chr(13) & Chr(10) Next End Sub
http://www.jcard.cn/Modules/LoginRandomImage.aspx
这个网站的,把后面颜色部分去掉,就是黑白的了,更容易识别,我那网站的颜色是随机变的,而且他的字母不是定宽定长,比这个网站的难识别多了。
这个网站的只有数字,很容易做作出字模矩阵来,象0就是如下的矩阵
011110
111111
110011
110011
110011
110011
110011
111111
011110
识别时加上一定的容错率,识别率应该是100%的。
x = FreeFile
Inet1.URL = "http://www.jcard.cn/Modules/LoginRandomImage.aspx"
b() = Inet1.OpenURL(, icByteArray)
Open "c:\tmp.bmp" For Binary Access Write As #x
Put #x, , b()
Close #x
Picture1.Picture = LoadPicture("c:\tmp.bmp")
'再用Picture1.Point(X, Y)调用图片每个像素的颜色值进行判断。因为这个网站的字体可以设置成黑色,而背景可以设置成白色,判断就容易了。
tmp = Picture1.Point(j, i)
s1 = Trim(Hex(tmp))
判断这个值的大小就能知道他是白色还是黑色,当然这个颜色有时有小量的偏差。需要调整。
再用每个字模的矩阵进行对比,得出结论。
Dim b() As Byte
x = FreeFile
Inet1.URL = "http://www.jcard.cn/Modules/LoginRandomImage.aspx"
b() = Inet1.OpenURL(, icByteArray)
Open "c:\tmp.bmp" For Binary Access Write As #x
Put #x, , b()
Close #x
Picture1.Picture = LoadPicture("c:\tmp.bmp")
Text1.Text = ""
For i = 5 To 13
tt = ""
For j = 0 To 39
If Picture1.Point(j, i) <> 16777215 Then '
tt = tt & "1"
Else
tt = tt & " "
End If
Next
Text1.Text = Text1.Text & tt & Chr(13) & Chr(10)
Next
End Sub