次世代验证码识别系统内存版免生成DLL文件

易语言 2020-08-18 19:08:33

次世代验证码识别系统内存版免生成DLL文件

.子程序 打开数据库, 整数型, 公开, 识别库索引
.参数 数据库地址, 文本型, , FilePath
.参数 密码, 文本型, 可空, PassWord
.局部变量 返回结果, 整数型

ProcAddr = GetMemProcAddress (hModule, “LoadCdsFromFile”)
调用子程序 (ProcAddr, , 返回结果, 数据库地址, 密码)
返回 (返回结果)

.子程序 验证码识别, 逻辑型, 公开
.参数 识别库索引, 整数型, , CdsIndex
.参数 图片, 字节集, , ImgBuffer
.参数 识别结果, 文本型, , Vcode
.局部变量 返回结果, 逻辑型

识别结果 = 取空白文本 (48)
ProcAddr = GetMemProcAddress (hModule, “GetVcodeFromBuffer”)
调用子程序 (ProcAddr, , 返回结果, 识别库索引, 图片, 取字节集长度 (图片), 识别结果)
返回 (返回结果)

识别库索引 = 类_识别.打开数据库 (, )
调试输出 (“识别库索引”, 识别库索引)

Clsid = 取空白字节集 (16)
CLSIDFromString (Ansi_Unicode (pStr), Clsid)
nLength = 取字节集长度 (图像数据)
hMem = GlobalAlloc (0, nLength)
CreateStreamOnHGlobal (hMem, 真, Stream)
lpvoid = GlobalLock (hMem)
写到内存 (图像数据, lpvoid, nLength)
GlobalUnlock (hMem)
pStream = GetObjectPtr (Stream, Stream, 0)
GdipCreateBitmapFromStream (取字节集数据 (指针到字节集 (pStream, 4), #整数型, 1), bitmap)
CreateStreamOnHGlobal (0, 真, DataStream)
pStream = GetObjectPtr (DataStream, DataStream, 0)
pStream = 取字节集数据 (指针到字节集 (pStream, 4), #整数型, 1)
GdipSaveImageToStream_int (bitmap, pStream, Clsid, 0)
GetHGlobalFromStream_int (pStream, hMemDataStream)
pDataStream = GlobalLock (hMemDataStream)
nStreamSize = GlobalSize (hMemDataStream)
.如果真 (pDataStream ≠ 0)
新图像 = 取空白字节集 (nStreamSize)
CopyMemory (新图像, pDataStream, nStreamSize)
bRet = 真
.如果真结束
GlobalUnlock (hMemDataStream)
GdipDisposeImage (bitmap)
GlobalFree (hMem)
GdiplusShutdown (Token)