Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Delphi - JPEG error #53

Tags:

jpeg

delphi

TImage.Picture.LoadFromFile('File.jpg');

but i got JPEG error #53 ! what is the reason for this error?

like image 874
Kermia Avatar asked Aug 19 '10 09:08

Kermia


3 Answers

This usually comes when the Jpeg image is downloaded from Internet and the download is not 100% complete. It can happen even with TImage. Unfortunately Jpeg do not have a checksum to check against.

The only think you can do is whenever this error is thrown to catch it and display more responsive message like "The image is corrupted.".

Since this raises the error:

procedure JpegError(cinfo: j_common_ptr); {$IFDEF LINUX} cdecl; export; {$ENDIF}
begin
  raise EJPEG.CreateFmt(sJPEGError,[cinfo^.err^.msg_code]);
end;

where

sJPEGError = 'JPEG error #%d';

you can try to catch EJPEG error and check for #53 within the message.

Since EJPEG inherits from EInvalidGraphic you can simply catch it with

catch
  on E: EInvalidGraphic do
  begin
    ShowMessage('Image file is corrupted.')
  end;
end;
like image 197
Gad D Lord Avatar answered Oct 19 '22 04:10

Gad D Lord


Does it occur to a single jpeg image or with all jpegs you try?

JPEG error #53 error will come due to Insufficient memory.

If file is corrupted, this error may occur.

So opening this image in paint or photoshop and re-saving it in jpeg can solve the problem.

like image 5
Bharat Avatar answered Oct 19 '22 04:10

Bharat


I also had the #53 error. It turned out that the error only occurred after I had erroneously saved a bitmap with the *.jpg extension. The obvious solution was to turn that bitmap into a jpeg and save it then :-).

like image 2
Tom Avatar answered Oct 19 '22 04:10

Tom