TImage.Picture.LoadFromFile( 'File.jpg');
但我得到 JPEG错误#53 !这个错误的原因是什么?
答案 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 组件解决了我的问题。