首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

idhttp下载验证图片,Image显示有关问题

2012-03-17 
idhttp下载验证图片,Image显示问题在线程中使用idhttp get一张验证图片.下载完毕然后在Form1的Image1显示,

idhttp下载验证图片,Image显示问题
在线程中使用idhttp get一张验证图片.下载完毕然后在Form1的Image1显示,但是在get之后
  IdHTTPT.Get(imgURL, ms);
  ms.SaveToFile('checkImg'+intToStr(siteIN)+'.bmp');
  ms.Position := 0;
  Form1.Memo1.Lines.Add(' ');
  Form1.Memo1.Lines.Add(' 成功获取验证码图片...');
  bmp := TBitMap.Create;
  bmp.LoadFromStream(ms);
  Form1.Image1.Picture.LoadFromFile('checkImg'+intToStr(siteIN)+'.bmp');
  Form1.Image1.Repaint;
  图片因为未下载完成无法显示出来,线程中使用sleep也不能实现,还试过了timer的if fileExists.请教下如何在线程中
下载完成一张验证图片然后在image中显示...先行谢过了......

[解决办法]
先创建tmemorystream,下载图片

image载入。==我写个把
[解决办法]

Delphi(Pascal) code
  procedure   TForm1.BitBtn1Click(Sender:   TObject);       var           strStream:   String;           memStream:   TMemoryStream;           jpegimg:   TJPEGImage;       begin           strStream   :=   idhttp1.Get('http://localhost/fc1_3.jpg');           memStream   :=   TMemoryStream.Create;           jpegimg       :=   TJPEGImage.Create;           try               memStream.Write(strStream[1],   Length(strStream));               memStream.Position   :=   0;               showmessage(Inttostr(Length(strStream)));               jpegimg.LoadFromStream(memStream);               Image1.Picture.Assign(jpegimg);           finally               memStream.Free;               jpegimg.Free;           end;       end;
[解决办法]
Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);varstream:TMemoryStream;beginStream := TMemoryStream.Create ;idhttp1.Get('http://avatar.profile.csdn.net/2/F/4/2_shuaialang.jpg',Stream);stream.SaveToFile('c:\1.jpg');image1.picture.loadfromfile('c:\1.jpg');end;
[解决办法]
以前写的,创建线程的时候将Timage传进去
Delphi(Pascal) code
function GetImage(): TJPEGImage;var  mmStream: TMemoryStream;  begin  Result := nil;  mmStream := TMemoryStream.Create;  try    FIdConn.Get(Format(CSVerifyImage, [RandomR()]), mmStream);    mmStream.Position := 0;    Result := TJPEGImage.Create;    Result.LoadFromStream(mmStream);  finally    mmStream.Free;  end;end;procedure Execute();  try    jpg := GetImage();    if jpg <> nil then    try                                   FImage.Picture.Assign(jpg);    finally      jpg.Free;    end;  except    FImage.Picture.Graphic := nil;  end;
[解决办法]
我原来也是用IdHTTP的组件下载谷歌地图的图片,老是莫名奇妙的出错,最后改为用SynaSock来下载,非常稳定,需要SynaSock给我发站内短信。
[解决办法]
IDHTTP还可以,ICS的也不错,只是用ICS读取 PHP的PNG格式验证码图片时可能会无法读取,IDHTTP就可以。

热点排行