Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Cargar una imagen desde la web a un TImage (https://www.clubdelphi.com/foros/showthread.php?t=36642)

asegura 19-10-2006 11:07:38

Cargar una imagen desde la web a un TImage
 
Hola amigos,


Necesito cargar una imagen desde la web (http://www.dominio.com/imagen.jpg) en un TImage. Si lo hago desde el diseño a través de la propiedad Picture no hay problema, en el dialogo pongo la direcció y la carga. El problema esta cuando lo hago desde código, es decir, hago un LoadFromFile('http://www.dominio.com/imagen.jpg'). Esta buscando la dirección c:\programa\http:\www.dominio.com\imagen.jpg.

Si alguien sabe como cargar una imagen, help me plis. :p


;) Muchas gracias

seoane 19-10-2006 13:59:12

En este hilo escribí un par de funciones que pueden resultarte útiles. Y si te apetece echale un vistazo al mensaje completo, veras un par de funciones mas que también puedes encontrar interesantes.

asegura 20-10-2006 01:45:48

De fabula
 
Muchas gracias seoane, me ha ido de fabula. Al final lo que he hecho es descargar la imagen como bmp como lo explicas en la primera parte, y luego lo cargo en el TImage normal.

Ahora tengo una segunda duda :p, quiero hacer lo mismo pero con videos y con Flash.


Un saludos y mil gracias,
Asegura

seoane 20-10-2006 02:13:10

En principio el mismo sistema se puede utilizar para cualquier tipo de archivo. La función DownloadToStream baja el archivo y lo guarda en un stream, así que tenemos 2 opciones, guardarlo en un archivo o si lo vamos a cargar en algún objeto que tenga el método LoadFromStream podemos cargarlo directamente. Por ejemplo:

Código Delphi [-]
// Aquí usando la función DownloadToStream guardamos el archivo en disco
var
  Stream: TFileStream;
begin
  Stream:= TFileStream.Create('d:\1.html',fmCreate);
  try
    DownloadToStream('http://www.google.es/',Stream);
  finally
    Stream.Free;
  end;
end;

Pero no todo es perfecto, este método bloquea la aplicación mientras se descarga el archivo. Si el archivo es grande y la conexión es lenta la aplicación parecerá congelarse. Una posible solución es utilizar un Application.ProcessMessages dentro del método DownloadToStream, otra solución seria usar los componentes Indy para realizar la descarga.

Código Delphi [-]
      while (InternetReadFile(hUrl, @Buffer, sizeof(Buffer), BytesRead)) do
      begin
        if (BytesRead = 0) then
        begin
          Result := TRUE;
          break;
        end;
        Stream.WriteBuffer(Buffer,BytesRead);
        Application.ProcessMessages; // <-- Añadir esto
      end;


La franja horaria es GMT +2. Ahora son las 19:04:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi