Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Visualizar imagenes en servidor web - webbrowser o componente image (https://www.clubdelphi.com/foros/showthread.php?t=85473)

vicens22 21-03-2014 21:26:49

Visualizar imagenes en servidor web - webbrowser o componente image
 
Buenas tardes,

Experimentando con Delphi XE5, me encuentro con la necesidad de visualizar fotografías que se encuentran en un servidor web.
He hecho algunas pruebas y entre ellas he intentado cargas las imagenes en un objeto tImage, utilizando un stream, de la siguiente forma :

Código Delphi [-]
 Stream := TMemoryStream.Create;
IdHTTP1.Get('http://fotos.agencia.es/fotos/Imagen1.jpg', Stream);
Stream.Seek(0, soFromBeginning);
ttImage1.Bitmap.LoadFromStream(Stream);

Curiosamente, esto funciona al ejecutar para windows, pero en el dispositivo android, aunque no da error el componente tImage muestra tan solo unos puntos sin cargar la imagen.

La otra opción q me planteaba es utilizar un webbrowser en lugar del componente tImage o similar.

Alguien ha experimentado algo más y me puede aconsejar, alguna otra opción o dar su opinión

Muchas gracias.
Saludos,

Vicente

vicens22 22-03-2014 09:52:33

Buenos días,

He seguido haciendo pruebas y en principio ya me funciona correctamente la carga y visualización de imágenes que se encuentran en la web, utilizando el componente tImage.
Aquí adjunto el código por si a alguien le resulta útil.
Agradezco cualquier comentario de mejora u otras opciones.

Saludos

Vicente


Código Delphi [-]

var Stream: TMemoryStream;

begin

nNum:=10;
   try

         Stream := TMemoryStream.Create;


         idHTTP1.Get('http://fotos.agencia.es/fotos/Imagen1.jpg', Stream);
      
         Stream.Seek(0, soFromBeginning);
         tiFoto.bitmap.LoadFromStream(Stream);
    finally
         Stream.Free;
   end;

Casimiro Notevi 22-03-2014 10:52:16

Gracias ^\||/

gustavosv 28-10-2015 22:53:41

Hola, tengo un problema muy parecido, simplemente que mis imágenes están en un servidor interno no en un servidor web. Uso XE7.

Tengo un servidor Datasnap que accesa a la base de datos y a los archivos JPG, y unos clientes Windows y Android, el asunto funciona en Windows pero no en Android, estoy usando un TJSONArray para traer la imagen pero en el dispositivo Android el Stream llega = nil.

Aquí el código del servidor Datasnap
Código Delphi [-]
function TServerMethGeneral.GetImagen(ArchivoImagen: string): TJSONArray;
var
  AArchStream: TMemoryStream;
begin
  Result := nil;
  AArchStream := TMemoryStream.Create;

    if FileExists(ArchivoImagen) then
    begin
      AArchStream.LoadFromFile(ArchivoImagen);
      AArchStream.Seek(0, 0);
      Result := TDBXJSONTools.StreamToJSON(AArchStream, 0, AArchStream.Size);
    end
    else
      showmessage('NO se encontró el archivo de imagen: '+ArchivoImagen);
end;

y éste el método de la aplicación cliente, que utiliza un componente TSqlServerMethod (SqlSrvMethGetImagen) para enlazarse
Código Delphi [-]
var
  RutaImg: string;
  AArchJSON: TJSONArray;
  AArchStrem: TStream;
begin
  AArchStrem := TStream.Create;
  RutaImg := 'C:\Imagenes\IMG_5671.jpg';

    SqlSrvMethGetImagen.ParamByName('ArchivoImagen').AsWideString := RutaImg;
    SqlSrvMethGetImagen.ExecuteMethod;

    AArchJSON := (SqlSrvMethGetImagen.ParamByName('ReturnParameter').AsObject) as TJSONArray;
    if AArchJSON = nil then
      ShowMessage('NO encontró la imagen: ' + RutaImg)
    else
    begin
      AArchStrem := TDBXJSONTools.JSONToStream(AArchJSON);
      AArchStrem.Seek(0, 0);
      Image1.Bitmap.LoadFromStream(AArchStrem);
    end;

O me estoy complicando y la solución es por otro lado ...?

Gracias,

GustavoSV


La franja horaria es GMT +2. Ahora son las 14:31:26.

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