亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ndocr.dpr

?? 一個不錯的QQ2009驗證碼自動識別程序源代碼
?? DPR
字號:
library NdOcr;

uses
  SysUtils,Windows,Classes,Graphics,Math,GifImage,Jpeg,PngImage,IdHTTP,IdCookieManager;

type
  TBArray = Array of byte;
  TModuleLib = record
  	kind: string;
  	hdl: THandle;
    loadLib: function(fn,libName:pchar):Integer;stdcall;
    freeLib: procedure();stdcall;
    getCode: function(var ary:TBArray;w,h:Integer;para:pchar):pchar;stdcall;
  end;

var
	moduleLibAry: Array of TModuleLib;

{$R *.res}

function getCodeFromStream(var pStm:TMemoryStream;colorDepth,kind,para:pchar):pchar;stdcall;
var
  buf: Array[0..3] of byte;
  imgAry: TBArray;
  i,j,lineSize,dataOff,dataSize,imgW,imgH: Integer;
  bmp: TBITMAP;
  gif: TGIFImage;
  jpg: TJPEGImage;
  png: TPNGobject;
  stm: TMemoryStream;
begin
  stm := TMemoryStream.Create();
  stm.LoadFromStream(pStm);

  stm.Position := 0;
  stm.ReadBuffer(buf[0],4);
  stm.Position := 0;
  bmp := TBITMAP.Create();
  if (buf[0]=66) and (buf[1]=77) then begin
    bmp.LoadFromStream(stm)
  end else if (buf[0]=71) and (buf[1]=73) and (buf[2]=70) then begin
    gif := TGifImage.Create();
    gif.LoadFromStream(stm);
    bmp.Assign(gif);
    gif.Free()
  end else if (buf[1]=80) and (buf[2]=78) and (buf[3]=71) then begin
    png := TPNGobject.Create();
    png.LoadFromStream(stm);
    bmp.Assign(png);
    png.Free();
  end else begin
    jpg := TJpegImage.Create();
    jpg.LoadFromStream(stm);
    bmp.Assign(jpg);
    jpg.Free();
  end;

  imgW := bmp.Width;
  imgH := bmp.Height;
  if StrComp(colorDepth,'') <> 0 then bmp.PixelFormat := TPixelFormat(StrToInt(colorDepth));
  bmp.PixelFormat := pf24Bit;
  stm.Clear();
  bmp.SaveToStream(stm);
  bmp.Free();

  stm.Position := 0;
  stm.Seek(10,soCurrent);
  stm.ReadBuffer(buf[0],4);
  dataOff := buf[0] + buf[1] shl 8 + buf[2] shl 16 + buf[3] shl 24;
  lineSize := ((imgW*24+31) shr 5) shl 2;
  stm.Seek(20,soCurrent);
  stm.ReadBuffer(buf[0],4);
  dataSize := buf[0] + buf[1] shl 8 + buf[2] shl 16 + buf[3] shl 24;
  SetLength(imgAry,imgW*imgH*3);
  stm.Position := dataOff + dataSize - lineSize;
  for i:=0 to imgH-1 do
  begin
    stm.ReadBuffer(imgAry[i*imgW*3],imgW*3);
    stm.Seek(-imgW*3-lineSize,soCurrent);
  end;
  stm.Free();

  j := Length(moduleLibAry);
  for i:=0 to j-1 do
    if StrComp(pchar(moduleLibAry[i].kind),kind) = 0 then break;
  if i >= j then result := '?'
  else result := moduleLibAry[i].getCode(imgAry,imgW,imgH,para);
end;

function getCodeFromFile(fn,colorDepth,kind,para:pchar):pchar;stdcall;
var stm: TMemoryStream;
begin
  if FileExists(fn) then
  begin
    stm := TMemoryStream.Create();
    stm.LoadFromFile(fn);
    result := getCodeFromStream(stm,colorDepth,kind,para);
    stm.Free();
  end else
    result := '?';
end;

function getCodeFromUrl(url,domain,cookie,colorDepth,kind,para:pchar):pchar;stdcall;
var
  idhttp: TIDHttp;
  stm: TMemoryStream;
begin
  idhttp := TIDHttp.Create(nil);
  idhttp.CookieManager := TIDCookieManager.Create(idhttp);
  idhttp.CookieManager.AddCookie(cookie,domain);
  stm := TMemoryStream.Create();
  idhttp.Get(url,stm);
  idhttp.free();
  result := getCodeFromStream(stm,colorDepth,kind,para);
  stm.Free();
end;

function loadLib(fn,kind,libFn,libName:pchar):Integer;stdcall;
var
  n,j: Integer;
  mdl: TModuleLib;
begin
  kind := pchar(LowerCase(string(kind)));
  j := Length(moduleLibAry);
  for n:=0 to j-1 do
    if StrComp(pchar(moduleLibAry[n].kind),kind) = 0 then break;
  if n >= j then
  begin
    result := 0;
    mdl.hdl := LoadLibrary(fn);
    if mdl.hdl = 0 then exit;
    mdl.loadLib := GetProcAddress(mdl.hdl,'loadLib');
    mdl.freeLib := GetProcAddress(mdl.hdl,'freeLib');
    mdl.getCode := GetProcAddress(mdl.hdl,'getCode');
    if (@mdl.loadLib=nil) or (@mdl.freeLib=nil) or (@mdl.getCode=nil) then
    begin
      FreeLibrary(mdl.hdl);
      exit;
    end;
    mdl.kind := kind;
    SetLength(moduleLibAry,j+1);
    moduleLibAry[j] := mdl;
    n := j;
  end;
  result := moduleLibAry[n].loadLib(libFn,libName);
end;

procedure freeLib(kind:pchar);stdcall;
var
  n,j: Integer;
begin
  kind := pchar(LowerCase(string(kind)));
  j := Length(moduleLibAry) - 1;
  if StrComp(kind,'') = 0 then begin
    for n:=0 to j do
    begin
      moduleLibary[n].freeLib();
      FreeLibrary(moduleLibAry[n].hdl);
    end;
    SetLength(moduleLibAry,0);
  end else begin
    for n:=0 to j do
      if StrComp(pchar(moduleLibAry[n].kind),kind) = 0 then break;
    if n <= j then
    begin
      moduleLibary[n].freeLib();
      FreeLibrary(moduleLibAry[n].hdl);
    end;
    if n < j then moduleLibAry[n] := moduleLibAry[j];
    if n <= j then SetLength(moduleLibAry,j);
  end;
end;

exports
  loadLib,
  freeLib,
  getCodeFromFile,
  getCodeFromUrl,
  getCodeFromStream;

begin
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品综合久久久久久| 久久99国内精品| www.亚洲国产| 欧美激情一区二区三区| 国产一区久久久| 国产亚洲短视频| 色综合一区二区| 天天综合网 天天综合色| 日韩欧美在线一区二区三区| 久久99精品国产麻豆不卡| 欧美韩国一区二区| 欧美四级电影在线观看| 激情久久五月天| 国产精品国产馆在线真实露脸| 欧美综合亚洲图片综合区| 日韩av一区二| 国产精品久久久久久福利一牛影视| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲va欧美va人人爽| 欧美精品一区二区高清在线观看| 成人黄色综合网站| 日韩精品亚洲专区| 国产精品久久久久精k8| 欧美日韩视频一区二区| 国产乱人伦偷精品视频不卡| 一卡二卡三卡日韩欧美| 亚洲精品一区二区三区精华液| av在线一区二区三区| 麻豆91免费看| 亚洲精品国产成人久久av盗摄| 日韩精品一区在线| 91国在线观看| 成人综合在线视频| 免费观看日韩电影| 亚洲精品视频自拍| 久久色成人在线| 欧美伦理视频网站| 日本国产一区二区| 成人永久aaa| 六月婷婷色综合| 亚洲五月六月丁香激情| 国产精品久线在线观看| 久久综合色一综合色88| 欧美日韩国产首页在线观看| 成人国产亚洲欧美成人综合网| 久久精品久久99精品久久| 亚洲自拍偷拍图区| 亚洲国产岛国毛片在线| 精品少妇一区二区三区视频免付费| 色视频成人在线观看免| 高清不卡一区二区在线| 狠狠狠色丁香婷婷综合激情| 日本在线观看不卡视频| 亚洲综合自拍偷拍| 综合在线观看色| 国产亚洲欧美色| 久久综合久久鬼色| 日韩欧美在线影院| 91麻豆精品国产91久久久久久| 日本韩国一区二区三区| 91看片淫黄大片一级在线观看| 国产精品一区二区无线| 国产专区欧美精品| 九色综合国产一区二区三区| 秋霞影院一区二区| 强制捆绑调教一区二区| 蜜桃av噜噜一区| 日韩av中文在线观看| 日本特黄久久久高潮| 日韩福利电影在线| 日本中文字幕一区| 蜜桃av一区二区| 久久成人免费电影| 精品一区二区三区的国产在线播放| 久久精品国产网站| 狠狠色狠狠色综合系列| 国产专区欧美精品| 国产成人免费在线观看| 成人黄色777网| 91碰在线视频| 色爱区综合激月婷婷| 欧美日韩一区二区在线观看| 欧美乱妇一区二区三区不卡视频| 欧美日韩黄色一区二区| 91精品国产综合久久婷婷香蕉| 欧美一区二区观看视频| 欧美一级片在线观看| 欧美日本乱大交xxxxx| 日韩欧美高清在线| 国产无一区二区| 国产精品高潮呻吟| 亚洲免费观看在线观看| 五月婷婷综合网| 久久成人综合网| 国产成人综合亚洲网站| 91精品久久久久久久91蜜桃 | 亚洲欧洲国产日韩| 亚洲精选一二三| 日韩电影在线免费看| 国产一区二区三区四区五区美女| 成人精品gif动图一区| 欧洲精品视频在线观看| 日韩视频一区二区三区在线播放| 久久久久久久电影| 亚洲欧美另类小说视频| 日本欧美肥老太交大片| 顶级嫩模精品视频在线看| 欧美系列在线观看| 精品88久久久久88久久久| 综合电影一区二区三区| 日产精品久久久久久久性色 | 色视频一区二区| 日韩欧美国产综合| 亚洲欧洲成人自拍| 裸体健美xxxx欧美裸体表演| 成人不卡免费av| 日韩午夜电影av| 亚洲蜜臀av乱码久久精品蜜桃| 秋霞午夜av一区二区三区| 99视频一区二区| 日韩视频123| 亚洲女与黑人做爰| 久久99精品国产麻豆婷婷 | 欧美一区二区三区免费大片| 久久久不卡影院| 日韩国产精品大片| 97精品电影院| 国产亚洲精品免费| 免费一区二区视频| 在线免费观看日韩欧美| 国产偷国产偷精品高清尤物| 日韩黄色免费网站| 在线观看日韩精品| 国产精品欧美极品| 国产一区二区三区精品视频| 欧美视频日韩视频| 日韩理论片网站| 高清shemale亚洲人妖| 精品噜噜噜噜久久久久久久久试看| 一区二区三区精品在线观看| 成人免费视频一区二区| 精品日本一线二线三线不卡| 午夜日韩在线观看| 在线影视一区二区三区| 亚洲欧洲精品一区二区三区 | 成人av动漫在线| 久久亚区不卡日本| 蜜臀av国产精品久久久久| 在线观看一区二区视频| 亚洲欧洲av在线| 不卡在线观看av| 国产欧美精品一区aⅴ影院 | 99在线精品一区二区三区| 久久久久国产精品麻豆| 久久精品国产在热久久| 日韩亚洲电影在线| 免费欧美在线视频| 欧美久久免费观看| 午夜精品在线看| 欧美日韩国产一二三| 日欧美一区二区| 欧美一卡二卡三卡四卡| 免费在线视频一区| 日韩欧美在线综合网| 黄色精品一二区| 久久精品视频网| 成年人午夜久久久| 亚洲欧美日韩中文字幕一区二区三区 | k8久久久一区二区三区| 中文成人av在线| 91网站黄www| 亚洲国产欧美日韩另类综合| 欧美日韩国产综合一区二区| 日本91福利区| 精品国产一区二区三区不卡| 国产一区二区免费看| 久久精品一区八戒影视| 成人福利电影精品一区二区在线观看| 国产欧美日韩视频在线观看| 成人91在线观看| 亚洲韩国精品一区| 欧美一区二区三区影视| 国内久久婷婷综合| 国产精品欧美精品| 欧美午夜视频网站| 日韩国产欧美三级| 国产无遮挡一区二区三区毛片日本| 丁香激情综合国产| 亚洲国产成人av网| 日韩欧美电影一二三| 成人深夜福利app| 亚洲r级在线视频| 久久午夜羞羞影院免费观看| 不卡的电影网站| 亚洲超碰97人人做人人爱| 精品久久人人做人人爱| www.激情成人| 免费成人av资源网| 国产精品色一区二区三区| 欧美最猛性xxxxx直播|