【发布时间】:2010-08-19 09:00:03
【问题描述】:
TImage.Picture.LoadFromFile('File.jpg');
但我得到 JPEG 错误 #53 !这个错误的原因是什么?
【问题讨论】:
TImage.Picture.LoadFromFile('File.jpg');
但我得到 JPEG 错误 #53 !这个错误的原因是什么?
【问题讨论】:
这通常发生在从 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;
在哪里
sJPEGError = 'JPEG error #%d';
您可以尝试捕获 EJPEG 错误并检查消息中的 #53。
由于 EJPEG 继承自 EInvalidGraphic,您可以简单地用它来捕捉它
catch
on E: EInvalidGraphic do
begin
ShowMessage('Image file is corrupted.')
end;
end;
【讨论】:
是单个 jpeg 图像还是您尝试的所有 jpeg 都会出现这种情况?
JPEG error #53 错误将由于内存不足而出现。
如果文件损坏,可能会发生此错误。
所以在paint或photoshop中打开这张图片,然后用jpeg重新保存就可以解决问题了。
【讨论】:
我也遇到了 #53 错误。 事实证明,该错误仅发生在我错误地保存了带有 *.jpg 扩展名的位图之后。 显而易见的解决方案是将该位图转换为 jpeg 并保存 :-)。
【讨论】:
使用 TAdvPicture 组件解决了我的问题。
【讨论】:
JPEG Error #53
如果出现在此语句TImage.Picture.LoadFromFile('File.jpg')中的“JPEG error #53”,请尝试以下解决方法
TImage.Picture.Bitmap.LoadFromFile('File.jpg');
请注意,文件 File.jpg 应存在于提供的位置。
【讨论】:
TBitmap 怎么会加载 JPEG 文件? TBitmap 可以加载,嗯,位图。 [虽然反对票不是我的]