如何用pB获得网页随机图形验证码,并转换为文本,比如:1238
请高手指点。
急!
验证码图片地址是:
http://das.bitauto.com/Price/ValidatecodeImg.aspx?t=0.8452094821259379
------解决方案--------------------
这个用PB有难度吧.
------解决方案--------------------
单纯用PB实现有难度,可以结合一些文字识别控件来实现
------解决方案--------------------
用pb可以实现,需要用到inel
继承internetresult保存为n_ir
n_ir里定义实例变量,源文件如下
forward
global type n_ir from internetresult
end type
end forward
global type n_ir from internetresult
end type
global n_ir n_ir
type variables
blob ib_data
end variables
forward prototypes
public function integer internetdata (blob data)
end prototypes
public function integer internetdata (blob data);ib_data = data
return 1
end function
on n_ir.create
call super::create
TriggerEvent( this, "constructor" )
end on
on n_ir.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on
然后在你的窗口里写以下代码(窗口上放一个picture命名为p_validate)
实例变量
n_ir iir_msgbox
inet iinet_base
按钮里代码如下
Blob lblb_args
String ls_headers
String ls_url
Long ll_length
ls_url = "http://ptlogin2.qq.com/getimage"
iinet_base.geturl(ls_url, iir_msgbox)
string ls_data
ls_data = string(iir_msgbox.ib_data, Encodingutf8!)
p_validate.SetPicture(iir_msgbox.ib_data)
return 1
------解决方案--------------------
这个的验证码不是很复杂(仅就这个而言,有的验证码还是比较麻烦的).不需要太多的理论知识.(如果真要做通用的文字识别,不下几年苦功夫是不行的)
如果你会VC一类的.找本有图像处理的书.你知道如何得到图片中每一个点.
再去找本简单的图像识别的书,不要理论的,越简单越好,有例子就行.(书店大把)
最后做识别的时候,不要想着做通用的.你专门针对这个验证码来做,就很简单了.你也不需要100%的识别正确,因为你可以,"看不清楚,换一张图片".
如果有比较好的VC的基础,加上看书的时间,两三个星期吧.
具体的东西没法三言两语说清楚.而且我也不方便说得太清楚,见谅.
------解决方案--------------------
band()
------解决方案--------------------
先把图片取出来,然后再分析,要把图片转成文本难度比较大,可以参考以下内容
http://wenku.baidu.com/view/d1020021af45b307e871976e.html
------解决方案--------------------
取容易,自动识别就不懂了。。