Cita:
Empezado por Neftali [Germán.Estévez]
He visto que usas FTP.
Revisa el tipo de transferencia FTP que estás utilizando. Si no estás utilizando transferencia "binaria" puedes ser que el fichero se altere.
|
Gracias por la información.
de alguna manera es cierto, pero lo tengo configurado como binario.
Pero la foto por mas que le indique que fuera jpg, lo guardo con formato png, por lo tanto al intentar cargar un jpg en el timage se generaba el error por la codificación del archivo.
Al final se resolvió con un código de esta persona [Chris] no puedo poner url
club delphi com foros showthread t=80857 esta es la dirección del código que utilice excelente solución.
Código Delphi
[-]
Function gclas(Source:TStream):TGraphicClass;
var
FStreamHeader : TStringStream;
StartPosition : Int64;
CONST PNGFILE_HEADER = '‰PNG';
BMPFILE_HEADER = 'BM';
JPGFILE_HEADER = 'ÿØÿà';
Begin
try
StartPosition := Source.Position;
IF Source.Size > 0 Then
Source.Position := 0
else
Raise Exception.Create('El stream no tiene datos');
FStreamHeader := TStringStream.Create('');
with FStreamHeader do
begin
CopyFrom(Source,512); if pos(PNGFILE_HEADER,DataString) > 0 Then
Result := TPNGObject
else
if pos(BMPFILE_HEADER,DataString) > 0 Then
Result := TBitmap
else
if pos(JPGFILE_HEADER,DataString) > 0 Then
Result := TJPEGImage
else
Result := TGraphic; end;
finally
Source.Position := StartPosition;
end;
end;
procedure TFOTOVEHICULOS.verfotosClick (sender)
var ms: TmemoryStream;
httpCli: TIdHTTP;
url: string;
I,ATOP: Integer;
imgPath: string;
image1: TImage;
BTE:TButton;
begin
atop:=0;
while not listafotos.Eof do
begin
httpCli := TIdHTTP.Create(nil);
ms := TMemoryStream.Create();
url := 'direccion'+ nombrefoto +'.jpg';
httpCli.Get(url,ms);
ms.Position := 0;
gclas(ms);
Application.ProcessMessages;
Image1 := TImage.Create(self);
Image1.Height := 250;
Image1.Width := 250;
Image1.Top := atop;
BTE:=TButton.Create(NIL);
BTE.Top:=ATOP+255;
BTE.Height:=25;
BTE.Width:=83;
BTE.Parent:=ScrollBox1;
BTE.Name:='bt_'+NOMBREFOTO;
BTE.OnClick:=ELIMINARI;
Inc(atop,280);
Image1.Left := 0;
image1.Parent:=ScrollBox1 ;
image1.Name:='IM_'+NOMBREFOTO);
image1.Stretch:=True;
image1.OnDblClick:=ABRIRIMAGEN;
image1.Picture.LoadFromStream(ms);
ms.free;
httpCli.free;
listafotos.Next;
end
end;