Delphi - JPEG错误#53

时间:2010-08-19 09:00:03

标签: delphi jpeg

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

但我得到 JPEG错误#53 !这个错误的原因是什么?

5 个答案:

答案 0 :(得分:5)

这通常是在从Internet下载Jpeg图像并且下载未完全完成时。即使使用TImage也可能发生这种情况。 不幸的是,Jpeg没有校验和检查。

唯一的想法是,无论何时抛出此错误以捕获它并显示更多响应消息,例如“图像已损坏。”。

因为这会引发错误:

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

,其中

sJPEGError = 'JPEG error #%d';

您可以尝试捕获EJPEG错误并在消息中检查#53。

由于EJPEG继承自EInvalidGraphic,您可以使用

来捕获它
catch
  on E: EInvalidGraphic do
  begin
    ShowMessage('Image file is corrupted.')
  end;
end;

答案 1 :(得分:4)

单个jpeg图像或您尝试使用的所有jpeg都会出现这种情况吗?

JPEG错误#53错误将由于内存不足而出现。

如果文件已损坏,则可能会发生此错误。

因此,在paint或photoshop中打开此图像并将其重新保存在jpeg中可以解决问题。

答案 2 :(得分:1)

请尝试以下解决'JPEG错误#53',如果它出现在此声明TImage.Picture.LoadFromFile('File.jpg')

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

请注意,File File.jpg应该存在于提供的位置。

答案 3 :(得分:1)

我也遇到了#53错误。 事实证明,错误只发生在我错误地保存了具有* .jpg扩展名的位图之后。 显而易见的解决方案是将该位图转换为jpeg然后保存: - )。

答案 4 :(得分:-4)

使用 TAdvPicture 组件解决了我的问题。