Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-10-2013
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
TImage a TStream

Estimados,

necesito crear un TStream en memoria a contar de un componente TImage, que tiene una imagen previamente cargada.
Como hago esto?

Gracias
Responder Con Cita
  #2  
Antiguo 03-10-2013
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Si la imagen ya está cargada, debería bastar con esto:

Código Delphi [-]
var VStream: TStream;
begin
   VStream := TMemoryStream.Create;
   Image1.Picture.Bitmap.SaveToStream(VStream);
end;

Donde Image1 es el objeto TImage que ya tiene la imagen cargada.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 04-10-2013
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Estimado, estoy probando Delphi XE5, con una aplicación para Android y un servidor DataSnap.
Lo que necesito es insertar un registro en una base de Dato Firebird 2.5, en un campo tipo BLOB (size 16384, type Text), desde un cliente con el procedimiento insert_imagen (servidor DataSnap).
La imagen está previamente cargada y visualizada en un TImage, llamado imgCameraPicture.

Código Delphi [-]
procedure TServerMethods1.insert_imagen(imagen: TStream; usuario: integer);
begin
  with ibsql1 do
  begin
    transaction.Active := true;;
    close;
    sql.clear;
    sql.add('insert into imagenes (usuario, imagen, fecha)');
    sql.add('values (:usuario, :imagen, current_timestamp)');
    ParamByName('imagen').LoadFromStream(imagen);
    ParamByName('usuario').asinteger :=usuario;
    execquery;
    transaction.CommitRetaining;
  end;
end;

Y desde el cliente llamo al procedimiento como sigue.

Código Delphi [-]
var
  myServer : TServerMethods1Client;
  stream : TStream;
begin
if SQLConnection1.Connected then
begin
  myServer := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
  stream := TMemoryStream.Create;

    try
    imgCameraPicture.MultiResBitmap[0].bitmap.savetostream(stream);
    myServer.insert_imagen(stream, 10);

  finally

    stream.Free;
    myServer.Free;
  end;
end;
end;

con todo esto logro insertar el registro en la base de dato, pero el campo imagen está en blanco. que podrá ser ??
Responder Con Cita
  #4  
Antiguo 04-10-2013
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Ignoro si esto:

Código Delphi [-]
imgCameraPicture.MultiResBitmap[0].bitmap.savetostream(stream);

... no sería más bien algo así:

Código Delphi [-]
imgCameraPicture.bitmap.savetostream(stream);

Pero, de todas formas, prueba esto otro:

Código Delphi [-]
imgCameraPicture.MultiResBitmap[0].bitmap.savetostream(stream);
stream.Position := 0;
myServer.insert_imagen(stream, 10);

A ver si hay suerte.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 04-10-2013
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
Estimado, no he podido lograr insertar una imagen.

Respecto a tu duda, el componente TImage en XE5, trae esas opciones de poder almacenar mas de una imagen.

Habrá algún problema con la definición de la tabla??
O el código del procedimiento en el servidor?

Alguna idea?
Responder Con Cita
  #6  
Antiguo 05-10-2013
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Comprueba que efectivamente "imgCameraPicture.MultiResBitmap[0]" contiene alguna imagen. No dudo de que sea así, pero, recuerdo haber utilizado el "imgCameraPicture" en Android y accedí la imagen mediante "imgCameraPicture.Bitmap" o algo así... según recuerdo. Lo dicho, prueba que realmente tengas ahí una imagen, prueba guardándola en un archivo o acaso con un simple "<> nil".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
la variable TStream shekinax_007 Internet 3 29-05-2013 04:11:52
Duda con TStream.Readbuffer miguel_e Varios 2 04-01-2006 19:31:10
Problemas al guardar componentes con TStream!! OzzyzzO OOP 11 20-10-2005 18:02:51
Cargar Tstream de donde? zugazua2001 Varios 1 30-07-2005 14:44:35
Modificar tStream aig OOP 14 27-06-2003 09:09:29


La franja horaria es GMT +2. Ahora son las 21:24:24.


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
Copyright 1996-2007 Club Delphi