亚洲欧美第一页_禁久久精品乱码_粉嫩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极品美女在线| 欧美精品777| 日韩精品综合一本久道在线视频| 7777精品伊人久久久大香线蕉 | 亚洲欧洲综合另类| 亚洲丝袜制服诱惑| 裸体一区二区三区| 国产精品亚洲一区二区三区在线| 国产精品一区二区你懂的| 成人自拍视频在线观看| 成人av一区二区三区| 欧美色图激情小说| 久久久蜜桃精品| 亚洲chinese男男1069| 国产成人精品亚洲777人妖| 色婷婷亚洲综合| 国产视频在线观看一区二区三区| 最新不卡av在线| 国产在线日韩欧美| 欧美丝袜丝交足nylons图片| 久久九九影视网| 日韩av中文字幕一区二区| 97精品久久久久中文字幕| 精品久久久久久综合日本欧美| 中文一区一区三区高中清不卡| 亚洲二区视频在线| 欧洲一区二区三区在线| 国产人伦精品一区二区| 精品在线一区二区| 91精品国产全国免费观看| 亚洲欧美日韩中文播放| k8久久久一区二区三区| 国产日韩欧美综合在线| 国产精品99久久久久久有的能看| 欧美日韩一级片在线观看| 亚洲免费在线播放| 久久99国产精品久久99果冻传媒| 欧美日韩一区二区三区高清| 亚洲超丰满肉感bbw| 在线一区二区三区做爰视频网站| 国产精品久久99| 色婷婷亚洲精品| 亚洲福利视频一区二区| 欧美高清激情brazzers| 蜜桃一区二区三区四区| 日韩精品一区二区三区老鸭窝| 日韩影视精彩在线| 久久久久久久久久久黄色| 国产成人av电影在线| 国产精品视频麻豆| 欧美日韩精品一二三区| 免费看欧美女人艹b| 久久香蕉国产线看观看99| 成人美女视频在线观看| 一区二区三区视频在线看| 欧美精品一级二级| 国产精品一区2区| 亚洲一区二区高清| 国产亚洲一二三区| 欧美日韩视频在线第一区| 国产在线麻豆精品观看| 五月婷婷久久综合| 国产精品国产精品国产专区不蜜| 欧美丝袜丝nylons| 99麻豆久久久国产精品免费| 免费成人在线播放| 国产精品理伦片| 精品国产区一区| 欧美日韩一级片网站| 91丨porny丨户外露出| 国产尤物一区二区| 亚洲成人tv网| 亚洲影视在线播放| 亚洲三级久久久| 国产精品久久久久国产精品日日| 日韩女优视频免费观看| 欧美日韩免费电影| 欧美肥妇毛茸茸| 欧美丰满美乳xxx高潮www| 欧美午夜电影网| 精品污污网站免费看| 一本一道久久a久久精品| 不卡的av网站| 在线亚洲欧美专区二区| 色综合久久中文字幕| 在线看一区二区| 911精品产国品一二三产区| 欧美亚洲自拍偷拍| 日韩一区二区三区视频在线| 欧美剧在线免费观看网站 | 日本一区二区免费在线观看视频 | 国产91在线看| 欧美最猛黑人xxxxx猛交| 9i看片成人免费高清| 91精品1区2区| 欧美一区二区国产| 国产精品乱码久久久久久| 中文字幕一区二区三区不卡在线 | 国产精品一区二区三区99| 91蜜桃免费观看视频| 91精品国模一区二区三区| 精品少妇一区二区三区免费观看 | 国产mv日韩mv欧美| 欧洲一区二区三区在线| 精品欧美久久久| 136国产福利精品导航| 青青草国产精品97视觉盛宴| eeuss国产一区二区三区| 欧美喷水一区二区| 欧美激情综合在线| 午夜免费欧美电影| 91免费版pro下载短视频| 久久在线观看免费| 日韩精品一区第一页| 97久久精品人人爽人人爽蜜臀| 精品国产制服丝袜高跟| 亚洲综合久久av| 91丝袜美女网| 亚洲日本护士毛茸茸| 国产 欧美在线| 欧美成人r级一区二区三区| 亚洲成年人网站在线观看| 91极品美女在线| 亚洲最大成人综合| 色吧成人激情小说| 久久精品视频免费观看| 久久激情五月婷婷| 久久久久久免费网| 国产成都精品91一区二区三| 国产午夜亚洲精品不卡| 成年人国产精品| 一区在线观看免费| 95精品视频在线| 亚洲一二三四在线| 欧美一区二区日韩| 久久99国产精品久久| 欧美国产一区在线| 欧美色图片你懂的| 日韩有码一区二区三区| 国产亚洲精品福利| 色国产精品一区在线观看| 亚洲6080在线| 中文字幕不卡一区| 91精品国产综合久久精品| 久久99国产精品久久99 | 国产成人精品网址| 一区二区三区四区激情| 久久亚洲一区二区三区明星换脸| 99久久精品国产精品久久| 美腿丝袜亚洲三区| 《视频一区视频二区| 欧美另类z0zxhd电影| 91亚洲精华国产精华精华液| 日本免费在线视频不卡一不卡二| 国产日韩高清在线| 欧美一二三区精品| 色综合一个色综合亚洲| 美女www一区二区| 国产精品国产三级国产有无不卡| 欧美精品色一区二区三区| 国产成人夜色高潮福利影视| 久久精品国产秦先生| 亚洲国产精品久久人人爱 | 黑人精品欧美一区二区蜜桃| 一区二区三区不卡在线观看| 久久久一区二区三区捆绑**| 91精品国产综合久久久久久漫画 | 五月婷婷激情综合| 亚洲欧洲另类国产综合| 久久精品视频免费| 久久精品视频在线看| 国产亚洲女人久久久久毛片| 精品捆绑美女sm三区| 日韩午夜小视频| 精品国偷自产国产一区| 久久久亚洲精品一区二区三区 | 日韩国产精品久久久| 午夜不卡av免费| 日韩激情视频在线观看| 久久99精品国产麻豆婷婷| 狠狠久久亚洲欧美| 成人在线综合网站| 在线看国产一区| 日韩天堂在线观看| 国产亚洲一区二区三区在线观看 | 国产一区二区在线免费观看| 国产在线国偷精品免费看| 成人免费av网站| 7878成人国产在线观看| 久久综合九色综合欧美就去吻| 国产精品欧美一区喷水| 亚洲制服丝袜av| 国产成人午夜高潮毛片| 91成人国产精品| 欧美xxxxx牲另类人与| 综合电影一区二区三区| 老司机精品视频在线|