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 09-05-2005
Elfoscuro Elfoscuro is offline
Miembro
 
Registrado: mar 2005
Posts: 59
Poder: 20
Elfoscuro Va por buen camino
Problemas con Streams e Imágenes

Hola.

Tengo un pequeño problema con un código muy simple (algo bastante común en mi, fallar en lo más fácil). Tengo este código:

Código Delphi [-]
unit Visor_Imagen_OBJ;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, jpeg;
type
  TVisor_Imagen = class(TForm)
    Image1: TImage;
    Status: TStatusBar;
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
      fImagen:array of byte;
    { Public declarations }
  end;
var
  Visor_Imagen: TVisor_Imagen;
implementation
{$R *.dfm}
procedure TVisor_Imagen.FormShow(Sender: TObject);
var St:TMemoryStream;
    f:longint;
    jp: TJPEGImage;
    TipoImagen,LongDesc:byte;
    Desc:String;
    Posicion:longint;
begin
  Posicion:=0;
  Desc:='';
  TipoImagen:=fImagen[Posicion];
  inc(Posicion);
  LongDesc:=fImagen[Posicion];
  inc(Posicion);
  if LongDesc>0 then
      begin
        for f:=1 to LongDesc do
          begin
            Desc:=Desc+chr(fImagen[Posicion]);
            inc(Posicion);
          end;
      end
    else
      Desc:='Inlay Card';
  Status.SimpleText:=Status.SimpleText+' '+Desc;
  St:=TMemoryStream.Create;
  for f:=Posicion to length(fImagen)-1 do
    St.write(fImagen[f],1);
 St.Position:=0;
  jp := TJPEGImage.Create;
  try
    with jp do
    begin
      LoadFromStream(St);
      savetofile('prueba.jpg');  // ********************* 1
      Assign(Image1.Picture.Bitmap);
    end;
  finally
    jp.Free;
  end;
  St.Free;
end;
end.

La idea es que la form cargue un array de bytes (que le manda el programa principal) y lo descompone en varias partes, un string, varios integer, y una imagen, que cargo en un memorystream. La imagen es un JPG tal cual.

El caso es que la creación del stream y el traspaso al JPG lo hace bien. Lo compruebo en la línea marcada. El fichero prueba.jpg se abre perfectamente desde cualquier visor de imágenes.

Pero sin embargo, el TImage que tengo en pantalla (Image1), no muestra nada. ¿Que puede estar fallando?

Saludos
Responder Con Cita
  #2  
Antiguo 09-05-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Tal vez lo estés haciendo al revés, prueba con:

Código Delphi [-]
  Image1.Picture.Bitmap.Assign(jp); 
 o éste
   Image1.Picture.Assign(jp);
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 09-05-2005
Elfoscuro Elfoscuro is offline
Miembro
 
Registrado: mar 2005
Posts: 59
Poder: 20
Elfoscuro Va por buen camino
Vale, o sea, que lo que estaba haciendo era meterle al jpeg el contenido del image1, con lo que no solo no estaba dibujando la imagen, sino que estaba borrando el jpeg... ¿no?

Si es que hay dias en lo que uno debería quedarse en la cama ;-)

Saludos y gracias.
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


La franja horaria es GMT +2. Ahora son las 09:08:59.


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