它是出现在单个 jpeg 图像上还是出现在您尝试的所有 jpeg 图像上?
JPEG 错误 #53 错误将由于内存不足而出现。
如果文件已损坏,则可能会发生此错误。
所以在paint或photoshop中打开这张图片,再用jpeg重新保存就可以解决问题了。
这通常是从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 解决了。