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载入。==我写个把
[解决办法]
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;
[解决办法]
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传进去
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就可以。