在线程中使用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中显示...先行谢过了......
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中显示...先行谢过了......
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);
var
stream:TMemoryStream;
begin
Stream := 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;
我用的就是跟你这一样的代码..但是执行到image1.picture.loadfromfile的时候验证图片还没下载完...显示不出图片来..
sleep也不行..线程暂停了....
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;
要不用GOTO