Delphi-JPEG错误#53

Ker*_*mia 6 delphi jpeg

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

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

Bha*_*rat 5

它是出现在单个 jpeg 图像上还是出现在您尝试的所有 jpeg 图像上?

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

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

所以在paint或photoshop中打开这张图片,再用jpeg重新保存就可以解决问题了。


Ive*_*aev 5

这通常是从Internet下载Jpeg映像并且下载未100%完成时出现的。即使使用TImage也可能发生。不幸的是,Jpeg没有校验和。

唯一可以做的就是在引发此错误以捕获该错误并显示更敏感的消息(例如“图像已损坏”)时进行操作。

由于这会引发错误:

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

哪里

sJPEGError = 'JPEG error #%d';
Run Code Online (Sandbox Code Playgroud)

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

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

catch
  on E: EInvalidGraphic do
  begin
    ShowMessage('Image file is corrupted.')
  end;
end;
Run Code Online (Sandbox Code Playgroud)


Ker*_*mia -5

我的问题通过使用TAdvPicture componenet 解决了。

  • 您能否提及如何使用 TAdvPicture 解决您的问题,我也遇到类似类型的错误,但图像根本没有损坏我可以在 SQLite 中查看图像数据,并且可以在另一个软件中正确提取图像。不知道为什么我收到“JPEG 错误 #53” (5认同)