【问题标题】:Delphi - JPEG error #53Delphi - JPEG 错误 #53
【发布时间】:2010-08-19 09:00:03
【问题描述】:

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

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

【问题讨论】:

    标签: delphi jpeg


    【解决方案1】:

    这通常发生在从 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;
    

    【讨论】:

      【解决方案2】:

      是单个 jpeg 图像还是您尝试的所有 jpeg 都会出现这种情况?

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 能否请您提及您是如何使用 TAdvPicture 解决问题的,我也遇到类似类型的错误,但图像根本没有损坏我可以在 SQLite 中查看图像数据,并且可以在另一个位置正确提取图像软件。不知道为什么我收到JPEG Error #53
          • TAdvPicture 不会引发错误,它会尽可能地显示图片,然后停止。我也将此作为解决方案,因为我无法使用 Try... 来阻止错误,但我真的不想更改 Vcl 中的代码。 TAdvPicture 是 TMS Software 的一个组件(这不是广告)
          • 如果有人需要一个组件,可以找到,如果你以正确的方式解决了这个问题并给出了足够的解释,然后告诉了我没有问题的一些组件,但是这个:你只是将一个问题描述为问题,突然你发现一个组件和SHAZAM什么都可以工作!!!这不是正确的方式。
          【解决方案5】:

          如果出现在此语句TImage.Picture.LoadFromFile('File.jpg')中的“JPEG error #53”,请尝试以下解决方法

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

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

          【讨论】:

          • 这是错误的。 TBitmap 怎么会加载 JPEG 文件? TBitmap 可以加载,嗯,位图。 [虽然反对票不是我的]
          猜你喜欢
          • 1970-01-01
          • 2015-05-13
          • 1970-01-01
          • 2015-12-27
          • 2013-12-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多