网络识图,delphi识别,百度图片

网络图片识别,根据网络图片链接识别图片,是使用百度图片识别

工具/原料

  • delphi
  • jpg网络图片链接

方法/步骤

  1. 放置2个button,2个edit,2个image

  2. button1的过程

    var

    ms:TMemoryStream;

    jpg:TJPEGImage;

    begin

    try

    jpg:=TJPEGImage.Create;

    ms:=TMemoryStream.Create;

    idhtp1.Get(edt1.Text,ms);

    ms.Position:=0;

    jpg.LoadFromStream(ms);

    img1.Picture.Assign(jpg);

    jpg.SaveToFile('c:\123.jpg');

    except

    ms.Free;

    end;

  3. button2的过程,即是识别图片过程,这个过程完全模拟百度上传图片识别

    var

    i:Integer;

    pd:tstringlist;

    s,sName,sUrljpg:string;

    ms,ms1:TStringStream;

    jpg:TJPEGImage;

    //  Cookies : TIdCookieManager;

    mstrCookie: string;

    begin

    try

    jpg:=TJPEGImage.Create;

    ms:=TStringStream.Create('');

    ms1:=TStringStream.Create('');

    img1.Picture.Bitmap.SaveToStream(ms);

    idhtp1.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko';

    idhtp1.Request.AcceptLanguage:='zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.7,en;q=0.5,es-DO;q=0.3,es;q=0.2';

    begin

    s:=(idhtp1.Post('http://image.baidu.com/pictureup/uploadshitu?'

    +'fr=flash&fm=index&pos=upload',mps));

    s:=(idhtp1.Get('http://image.baidu.com'+s));

    sName:=GetStringBetween(s,'guessWord','.split') ;

    sName:=Trim(StringReplace (sName,'''',

    '', [rfReplaceAll]));

    sName:=Trim(StringReplace (sName,':',

    '', [rfReplaceAll]));

    sUrljpg:=GetStringBetween(s,'<img class="guess-newbaike-left-img" src="','<div class="guess-newbaike-left-similarity">') ;

    sUrljpg:=Trim(StringReplace (sUrljpg,'amp;',

    '', [rfReplaceAll]));

    sUrljpg:=Trim(StringReplace (sUrljpg,'</div>',

    '', [rfReplaceAll]));

    sUrljpg:=Trim(StringReplace (sUrljpg,'">',

    '', [rfReplaceAll]));

    //  sUrljpg:=TIdURI.URLDecode(sUrljpg);

    idhtp1.Request.UserAgent := '';

    mstrCookie := 'aaa=5555&bb=12345';

    idhtp1.Request.AcceptEncoding := '';

    if mstrCookie <> '' then

    begin

    idhtp1.Request.CustomHeaders.Add('Cookie: ' + mstrCookie);

    end;

    idhtp1.Request.Referer:='https://www.baidu.com';

    idhtp1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko';

    idhtp1.Get(sUrljpg,ms1);

    ms1.Position:=0;

    jpg.LoadFromStream(ms1);

    img2.Picture.Assign(jpg);

    edt2.Text:='我猜您的图片是:'+Utf8ToAnsi(sName);

    // ShowMessage(sUrljpg);

    end;

    except

    MPS.Free;

    ms.Free;

    ms1.Free;

    end;

  4. 必要的过程,取字符串与字符串中间的字符

    function GetStringBetween(const FullStr, StrLeft, StrRight: String): string;

    var

    idx_Start,idx_End,iStrCnt: Integer;

    begin

    Result:='';

    idx_Start := Pos(StrLeft,FullStr)+Length(StrLeft);

    idx_End:= Pos(StrRight,FullStr);

    iStrCnt:= idx_End - idx_Start;

    Result:=Copy(FullStr,idx_Start,iStrCnt);

    end;

注意事项

  • TIdMultiPartFormDataStream;模拟百度上传图片,格式一模一样
分类:游戏/数码
标签:

站长推荐

我们猜您还喜欢

  • 【百度识图】怎么用图片进行搜索?人脸搜索?
  • 如何使用百度识图功能识别图片
  • 如何使用百度识图找到原图或图片资料
  • 图片也可以搜索谈百度识图功能识别花的名称
  • 怎样使用百度识图来搜索查找图片?
  • 【百度识图】怎样用图片搜素图片
  • 如何用“拍照传图识字”识别百度文库的收费文档
  • 如何使用百度识图识别图片来源?
  • 识别图片的来源,与判断是否是网络流行图。
  • 怎样使用百度识图查找图片的出处和来源