URL 주소를 받아서 이미지를 뿌려주고 저장 하려고 하고 있습니다.
<!--CodeS-->
procedure TForm_Pic.GetWebImage(AImageURL: String);
var
ImageStream: TMemoryStream;
URI: TidURI;
ImagePath: String;
JPI: TJPEGImage;
HTTP: TIdHTTP;
begin
ImageStream := TMemoryStream.Create;
HTTP := TIdHTTP.Create(Self);
try
HTTP.Get(AImageURL, ImageStream);
ImageStream.Position := 0;
JPI := TJPEGImage.Create;
try
JPI.LoadFromStream(ImageStream);
finally
Image1.Picture.Assign(JPI);
JPI.Free;
end;
finally
ImageStream.Free;
HTTP.Free;
end;
end;
procedure TForm_Pic.Button1Click(Sender: TObject);
var
ImageURL: String;
LineNo : Integer;
begin
for LineNo := 0 to ListBox1.Items.Count -1 do
begin
ImageURL := ListBox1.Items[LineNo];
GetWebImage('http://www.delphi.co.kr/' + ImageURL);
cutURL := RightStr(ImageURL,17);
image1.Picture.SaveToFile(cutURL);
image1.CleanupInstance;
end;
<!--CodeE-->
위와 같은 식으로 했습니다. ImageURL은 리스트 박스에 이미지 주소가 담겨 있구요
일단 리스트에 몇개씩은 저장 잘 되는대 다량의 리스트를 넣으면 에러가 뜨더라구요
아무래도 그림 하나 저장하고 완료되고 다음꺼 실행되고 이래야되는대 바로바로 리스트박스에서
불러와서 못따라 가는걸까요? 버튼 클릭 부분을 좀 개선 해야 할꺼 같은대
타이머를 심어야 하는지요? 델파이 초보가 고수님들께 조언좀 부탁드립니다.
그리고 프로그레스 바같은것도 하나 달아서 완료되면 알수 있도록 하나 만들어도 좋을꺼 같은대
팁 예제 같은대 찾아보면 좋은 글이 있을까요? 그럼 델코회원님들 즐코하세요^^
제가 보기엔 저러면 JPG 파일 빼고는 에러나지 싶은데...;
아마도 그게 문제가 될겁니다... JPG 파일 아니라면서 오류를 뿜어내겠죠.
왜 Image1으로 불러다가 저장해야 하는지는 잘 모르겠지만 MemoryStream에서도 파일로 저장이 가능합니다.
파일로만 저장하실 꺼면 굳이 Image1을 쓰실 필요는 없습니다.
추가로 반복문 안에 Application.ProcessMessage; 를 넣어서
변환하는데 시간이 좀 걸리는 동안 프로그램이 살아있도록(?) 해주세요.