Pobieranie obrazków z internetu bezpośrednio do image

0

witam,

wie ktoś może, jak to uczynić?
wiem jedynie przez indy (GET) pobrać tekst... np: do memorystream ale wazne dla mnie zeby to byl obrazek i zeby nie bylo go widac na dysku...

0

Wszystkie pliki na stronie sa kopiowane to twojej pamieci cache przegladarki. Nie da sie prosto z ftp/http wyswietlic obrazki.
Chyba musisz najpierw sciagnac obrazek, a nastepnie dac do image

0

{Modyfikacja kodu Adama Boducha z Listingu 11 Kompendium}
uses WinInet;

procedure Download(const URL: String; var Memory:TMemoryStream);
var
  Buffer : array[1..1024] of Byte; // bufor zawierający ściągnięty fragment pliku
  hSession, hURL : HINTERNET;
  dwRead : DWORD; // ilość odczytanych danych
  dwSize : DWORD;  // rozmiar pliku
  pBuf : Pointer;
  dwBufLen : DWORD;
 dwIndex : DWORD;
begin
{ otwieranie połączenia }
  hSession := InternetOpen('Fast Download',
                           INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  Application.ProcessMessages;

  try
  { otwarcie podanego adresu URL }
    hURL := InternetOpenURL(hSession, PChar(URL), nil, 0, 0, 0);
    Application.ProcessMessages;

    dwBufLen := 1024;
    dwIndex := 0;
    GetMem(pBuf, dwBufLen);

    { pobranie informacji na temat wielkości pliku }
    HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH,
                              pBuf, dwBufLen, dwIndex);
    dwSize := StrToInt(StrPas(pBuf));     {zmienna dwSize zawiera rozmiar Pliku}

    FreeMem(pBuf, dwBufLen);

    try
   Memory:=TMemoryStream.Create;
      try
      Memory.Position :=0;
      Memory.Size :=DwSize;
        repeat


        { pobieranie kolejnych fragmentów pliku }
          InternetReadFile(hURL, @Buffer, SizeOf(Buffer), dwRead);
          Memory.WriteBuffer( Buffer, dwRead); // zapisanie buforu do pliku
          Application.ProcessMessages;


        until dwRead = 0;
      finally
      Memory.Position :=0;
      end;
    finally
      InternetCloseHandle(hSession);
    end;
  finally
    InternetCloseHandle(hURL);

  end;

end;

i gdzieś w kodzie


var
MS:TMemoryStream;
Rysunek:TJpegImage; {do uses jpeg}

procedure TMainForm.btnDownloadClick(Sender: TObject);
begin
MS:=TMemoryStream.Create;
  Download('http://helion.pl/okladki/65x85/wstpch.jpg', MS);
  Rysunek:=TJpegImage.Create;
  Rysunek.LoadFromStream(MS);
  MS.Free;
  Image1.Picture.Assign(Rysunek);
  Rysunek.Free;
end;



;-P

0

piękne dzięki Piotrekdp [browar]

mam coś podobnego ale z tekstowymi pliczkami i nie bardzo wiedziałem co z tym zrobić ;)
dokładnie o to mi chodziło ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1