读书人

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

发布时间: 2012-03-17 19:06:28 作者: rapoo

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就可以。

读书人网 >.NET

热点推荐