Q&A

  • TImages컴포넌트에 웹상의 이미지를 어떻게 넣을수 있나요?
묻고답하기를 열씸히 뒤져도 원하는것을 찾기가 힘드네요
몇분은 다운받은다음 읽어들이라고 했는데..다운받지 않고 직접 읽어올수는 없는것인가요?
또 THTTP.Get(URL...)로 읽어서 이미지컴포넌트에 넣으라는 것도 봤지만 정확히 어떻게 하는지 모르겠어요..
좀 초보가 쉽게 알수 있도록 고수님들 자세한 설명 부탁드립니다.
4  COMMENTS
  • Profile
    최용일 2005.06.01 03:13
    안녕하세요. 최용일입니다.

    다운받지 않고 하는 방법은 존재하지 않습니다.

    다운받는다는게 꼭 하드에 파일로 저장하는것만을 의미하지는 않습니다.

    Indy 컴포넌트중에 TIdHTTP라는게 있습니다. 이걸 이용해서 아래와 같이 해보세요...

    <!--CodeS-->

    uses
        ......, JPEG;

    procedure TForm1.Button1Click(Sender: TObject);
    var
        Stream: TMemoryStream;
        JPEGImage: TJPEGImage;
    begin
        Stream := TMemoryStream.Create;
        IdHttp1.Get('http://image.libro.co.kr/book_img/829/207429_8995034831.jpg', Stream);
        JPEGImage := TJPEGImage.Create;
        Stream.Position := 0;
        JPEGImage.LoadFromStream(Stream);
        Image1.Picture.Assign(JPEGImage);
        JPEGImage.Free;
        Stream.Free;
    end;

    <!--CodeE-->

    인디컴포넌트가 없으시다면 인디를 설치하셔야됩니다. 델파이 6,7은 인디가 포함되어 있습니다.

    ^^ 항상 즐코하세요...

  • Profile
    임우식 2005.06.01 03:24
    웹서버에 사진들을 올려놓고 읽는데 최용일님이 알려준대로 해서 성공했습니다.
    그런데 읽으려는 파일이 없는경우가 종종 있어서 에러가 나는군요.
    읽어오려는 이미지가 웹상에 존재하는지는 어떻게 알 수 있습니까?
    귀찮으시더라도 다시한번 부탁드립니다.
  • Profile
    오명숙 2005.06.01 06:03
    안녕하세요..

    앞에 임우식님 질문에 최용일님께서 답변하신거 보면 답이 나와 있는것 같은데요..

    어차피 다른방식이 아닌 idHTTP를 이용한 웹상에서 다운로드 개념으로 이미지를 가져오는 거라면..
    예외처리를 통한 소켓에러(Socket Error #11001..)가 나온다면 해당파일이 없는 것으로 간주하면 될 것 같은데요?

    <!--CodeS-->
        try
          IdHttp1.Get('http://image.libro.co.kr/book_img/829/207429_8995034831.jpg', Stream);
        except
          on E:Exception do
            ShowMessage('오류:'+E.Message);
        end;
    <!--CodeE-->

    속도가 느린것은 웹상이다보니 어쩔 수 없는 듯..
    저라면 HTTP를 쓰지 않고 FTP라든지.. 다른 방식을 사용하는 쪽을 선택할 것 같습니다..^^;;
  • Profile
    임우식 2005.06.01 19:27
    아..그렇군요..감사합니다...워낙 서툴러서...