Ver Mensaje Individual
  #4  
Antiguo 28-10-2015
gustavosv gustavosv is offline
Miembro
 
Registrado: mar 2008
Posts: 51
Reputación: 17
gustavosv Va por buen camino
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
Responder Con Cita