PDA

Ver la Versión Completa : Visualizar imagenes en servidor web - webbrowser o componente image


vicens22
21-03-2014, 20:26:49
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 :


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, 08: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




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, 09:52:16
Gracias ^\||/

gustavosv
28-10-2015, 21: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

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

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