#delphi #jpeg #delphi-10.3-rio
#delphi #jpeg
Вопрос:
Временные рамки.Изображение.Загрузка из файла (‘File.jpg ‘);
но я получил ошибку JPEG # 53! в чем причина этой ошибки?
Ответ №1:
Обычно это происходит, когда изображение в формате Jpeg загружается из Интернета и загрузка не завершена на 100%. Это может произойти даже с временным интервалом. К сожалению, у 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. Файлы JFIF / JPEG можно проверить на неполноту:
EOI
должен появиться сегмент . Кроме того, повреждение файла не ограничивается неудачными загрузками.
Ответ №2:
Это происходит с одним изображением в формате jpeg или со всеми файлами jpeg, которые вы пытаетесь использовать?
Ошибка JPEG # 53 ошибка появится из-за нехватки памяти.
Если файл поврежден, может возникнуть эта ошибка.
Таким образом, открытие этого изображения в paint или photoshop и повторное сохранение его в формате jpeg может решить проблему.
Ответ №3:
У меня также была ошибка # 53. Оказалось, что ошибка возникла только после того, как я ошибочно сохранил растровое изображение с расширением * .jpg . Очевидным решением было превратить это растровое изображение в формат jpeg и сохранить его затем :-).
Ответ №4:
Пожалуйста, попробуйте выполнить следующее, чтобы решить «ошибку JPEG # 53», если она возникает при этом утверждении TImage.Picture.LoadFromFile('File.jpg')
TImage.Picture.Bitmap.LoadFromFile('File.jpg');
Обратите внимание, что файл File.jpg должно существовать в указанном месте.
Комментарии:
1. Это просто неправильно. Как можно
TBitmap
ожидать загрузки JPEG?TBitmap
может загружать, хм, растровые изображения. [хотя отрицательный результат не мой]
Ответ №5:
моя проблема решена с помощью TAdvPicture componenet.
Комментарии:
1. Не могли бы вы упомянуть, как вы решили свою проблему с помощью TAdvPicture, я также получаю ошибку аналогичного типа, но изображение вообще не повреждено. Я могу просматривать данные изображения в SQLite и правильно извлекать изображение в другом программном обеспечении. Не уверен, почему я получаю
JPEG Error #53
2. TAdvPicture просто не вызовет ошибку, он отобразит изображение как можно лучше, а затем остановится. Я также вернулся к этому в качестве решения, поскольку я не могу остановить ошибку с помощью попытки… Кроме того, и я действительно не хочу менять код в Vcl. TAdvPicture является компонентом программного обеспечения TMS (это не реклама)
3. Если кому-то нужен компонент, можно было бы найти, если бы вы правильно решили эту проблему с достаточным объяснением, а затем рассказали о каком-то компоненте, у меня не было проблем, но это: вы просто описали проблему как вопрос, и вдруг вы находите компонент, и SHAZAM что-нибудь просто работает!!! Здесь это неправильно.
4. Даже не связывая компонент: 1.3 от 2003 и 10.7 от 2022