Delphi - ошибка JPEG #53

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

но я получил ошибку JPEG # 53! в чем причина этой ошибки?

5 ответов

Решение

Моя проблема решена с помощью компонента TAdvPicture.

Обычно это происходит, когда образ 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 #53 возникает ошибка из-за нехватки памяти.

Если файл поврежден, эта ошибка может возникнуть.

Таким образом, открытие этого изображения в рисовании или фотошопе и повторное сохранение его в формате JPEG может решить проблему.

У меня также была ошибка #53. Оказалось, что ошибка произошла только после того, как я ошибочно сохранил растровое изображение с расширением *.jpg. Очевидное решение состояло в том, чтобы превратить это растровое изображение в формат JPEG и затем сохранить его:-).

Пожалуйста, попробуйте следовать, чтобы решить "Ошибка JPEG #53", если это происходит в этом заявлении TImage.Picture.LoadFromFile('File.jpg')

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

Обратите внимание, что файл File.jpg должен существовать в указанном месте.

Другие вопросы по тегам