Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Mostrar una imagen en un TImage desde un TMemoryStream
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Mostrar una imagen en un TImage desde un TMemoryStream

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Mostrar una imagen en un TImage desde un TMemoryStream Responder citando

Tengo una aplicación Delphi donde un procedimiento obtiene una imagen en un TMemoryStream, quiero mostrarla directamente en un TImage pero no sé cómo hacerlo. Sólo lo he conseguido guardándola previamente a fichero, pero esto es muy "chapucero" pues, una vez mostrada en el TImage, tengo que eliminar el fichero. El código es algo así:

Código:

var
  imagenMemory : TMemoryStream;
begin
  ...

  imagenMemory.SaveToFile ('c:\imagen.jpg');  //el MemoryStream
  imagenPantalla.LoadFromFile ('c:\imagen.jpg');  //el TImage

  ...
end;


Pero lógicamente, extraer una imagen a fichero para luego mostrarla y eliminar el fichero no es el método idóneo ¿hay alguna forma de mostrar la imagen del TMemoryStream directamente en el TImage sin guardarla en fichero?
MensajePublicado:
Dom Oct 31, 2010 8:17 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Mostrar una imagen en un TImage desde un TMemoryStream Responder citando



Anuncios



varios escribió:
Tengo una aplicación Delphi donde un procedimiento obtiene una imagen en un TMemoryStream, quiero mostrarla directamente en un TImage pero no sé cómo hacerlo. Sólo lo he conseguido guardándola previamente a fichero, pero esto es muy "chapucero" pues, una vez mostrada en el TImage, tengo que eliminar el fichero. El código es algo así:

Código:

var
  imagenMemory : TMemoryStream;
begin
  ...

  imagenMemory.SaveToFile ('c:\imagen.jpg');  //el MemoryStream
  imagenPantalla.LoadFromFile ('c:\imagen.jpg');  //el TImage

  ...
end;


Pero lógicamente, extraer una imagen a fichero para luego mostrarla y eliminar el fichero no es el método idóneo ¿hay alguna forma de mostrar la imagen del TMemoryStream directamente en el TImage sin guardarla en fichero?


Sí es posible, para mostrar una imagen de un MemoryStream en un TImage directamente en Borland Delphi, puedes usar este código de ejemplo:

Código:

var
  imagenMemory : TMemoryStream;
  jpg : TJPEGImage;
begin
  //código que cargará la imagen en el TMemoryStream
  ......

  //creamos el TJPEGImage
  jpg := TJPEGImage.Create;

  //asignamos el MemoryStream al JPEGImage
  jpg.LoadFromStream(imagenMemory);

  //asignamos el JPEGImage al TImage para mostrarla en pantalla
  imagenPantalla.Picture.Assign(jpg);
  imagenPantalla.Refresh;

  .....
end;
MensajePublicado:
Dom Oct 31, 2010 8:23 am
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Re: Mostrar una imagen en un TImage desde un TMemoryStream Responder citando



Anuncios



alonsojpd escribió:
Sí es posible, para mostrar una imagen de un MemoryStream en un TImage directamente en Borland Delphi, puedes usar este código de ejemplo:

Código:

var
  imagenMemory : TMemoryStream;
  jpg : TJPEGImage;
begin
  //código que cargará la imagen en el TMemoryStream
  ......

  //creamos el TJPEGImage
  jpg := TJPEGImage.Create;

  //asignamos el MemoryStream al JPEGImage
  jpg.LoadFromStream(imagenMemory);

  //asignamos el JPEGImage al TImage para mostrarla en pantalla
  imagenPantalla.Picture.Assign(jpg);
  imagenPantalla.Refresh;

  .....
end;



Lo he intentado pero me da este error:
---------------------------
Debugger Exception Notification
---------------------------
Project modImg.exe raised exception class EJPEG with message 'JPEG error #41'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


¿Qué puede faltar o qué estoy haciendo mal? he puesto el código tal como me lo has pasado.
MensajePublicado:
Dom Oct 31, 2010 8:27 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Mostrar una imagen en un TImage desde un TMemoryStream Responder citando



Anuncios



varios escribió:
Lo he intentado pero me da este error:
---------------------------
Debugger Exception Notification
---------------------------
Project modImg.exe raised exception class EJPEG with message 'JPEG error #41'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


¿Qué puede faltar o qué estoy haciendo mal? he puesto el código tal como me lo has pasado.


No, no estás haciendo nada mal, el problema es que nos ha faltado una línea de código, te quedaría así:

Código:

var
  imagenMemory : TMemoryStream;
  jpg : TJPEGImage;
begin
  //código que cargará la imagen en el TMemoryStream
  ......

  imagenMemory.Seek(0, soFromBeginning);
 
  //creamos el TJPEGImage
  jpg := TJPEGImage.Create;

  //asignamos el MemoryStream al JPEGImage
  jpg.LoadFromStream(imagenMemory);

  //asignamos el JPEGImage al TImage
  imagenPantalla.Picture.Assign(jpg);
  imagenPantalla.Refresh;

  .....
end;



Nos ha faltado la línea:

imagenMemory.Seek(0, soFromBeginning);
MensajePublicado:
Dom Oct 31, 2010 8:41 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A