PDA

Ver la Versión Completa : Cargando Imagen App Android


dison
22-04-2014, 14:44:08
Estoy cargando una imagen en un Timage en mi Android App

Uso:
XE5
DataSnap Server
App Android Client

Si la imagen es mas o meno (40KB, 200x200) la imagen se muestra perfecta en mi Timage, pero si la imagen es mas o menos (320KB, 970x800) no se muestra nada en el Timagen y no muestra ningun error, simplemente no muestra nada.

Uso esta rutina para cargar la imagen desde mi DataSnap Server



var

BlobStream: TStream;

begin

TClienDataSet1.Open;

BlobStream := TClienDataSet1.CreateBlobStream(TClienDataSet1.FieldByName('image'),TBlobStreamMode.bmRead);

try

TImage1.Bitmap.LoadFromStream(BlobStream );


finally

BlobStream.Free;

end;

end;

Combat-F2D
22-04-2014, 15:02:15
puedes utilizar el componente TImgecontrol

y lo empleas tal que

ImageControl.Bitmap.LoadFromFile('/tufichero.jpg' );

dison
22-04-2014, 15:21:53
Mi imagen no proviene del filesystem, proviene de un Blob Field, por eso lo cargo via TStream

TImage1.Bitmap.LoadFromStream(BlobStream );

supongo que no habría diferencia usando un Timage o un TImageControl

DP

Neftali [Germán.Estévez]
22-04-2014, 15:38:09
Te recomiendo que revises esta entrada en el blog de Salvador (Delphi Básico) (http://delphibasico.com/delphi/?p=3918).
Habla sobre el tema de DataSnap y creo recordar que en algún momento tuvo problemas al enviar imágenes (al hablar con él mientras estaba preparando la entrada del blog). En la entrada explicaba el porqué y la forma de solucionarlo.

No se si es problema será el mismo que estás teniendo tú, pero no está de más revisarlo.

dison
23-04-2014, 14:18:55
Gracias Neftali

Me ayudo mucho el atriculo de Salvador

Al final termine por usar StreamToJSON, del lado del servidor convierto el TBlob a Imagen, luego esta imagen la redimensiono a 200x200, luego convierto la nueva imagen a TStream y la envio al cliente Android.

mientra mas pequeña la imagen mas rápida se carga en el cliente pero la calida es minima, acualmente una imagen 400x300 tarda 6 segundo en mostrarse en la app android

Pero ya por lo menos logro cargarla.