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
public
fImagen:array of byte;
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'); 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