Проблема с отображением некоторых файлов JPG в Delphi - PullRequest
7 голосов
/ 23 августа 2009

Я попытался открыть несколько файлов JPEG в Delphi с компонентом TImage. я также добавил блок Jpeg. Я могу открыть большинство файлов JPG, и нет проблем.

но когда я пытаюсь открыть несколько JPG, программа просто выдает исключение.

Я также пытался загрузить эти изображения в режиме разработки, но есть некоторая проблема. в режиме разработки исключение составляет:

Нарушение доступа по адресу 402672A1 в модуле vcljpeg70.bpl. Запись по адресу 08E84000

Почему я не могу открыть этот JPG? они не повреждены. Я проверил их в некоторых инструментах, таких как saiftools EXIF ​​viewer.

вот URL одного из этих изображений: http://xs842.xs.to/xs842/09340/backpic435.jpg

Большое спасибо

PS: Моя версия Delphi - 7. Borland Delphi 7

Ответы [ 6 ]

12 голосов
/ 24 августа 2009

Причина, по которой вы можете столкнуться с этой проблемой, связана с типом файла. Delphi имеет проблемы с отображением изображений JPEG, которые были закодированы с использованием CMYK, а не кодировки RGB по умолчанию. CMYK - это формат, который обычно используется для печати, старайтесь всегда кодировать изображения в формат RGB, чтобы избежать этой проблемы с Delphi.

Патч для Delphi jpeg.dcu

Bye.

6 голосов
/ 24 августа 2009

Интересно. Ни Internet Explorer , ни Google Chrome не будут отображать изображение JPEG, на которое вы ссылались. Я не получаю 404 Not Found ошибок, я просто получаю заполнитель изображения, указывающий, что изображение не может быть открыто / отображено правильно.

FireFox отображает изображение.

Вы уверены, что в файлах JPG нет ничего подозрительного или хотя бы немного необычного?

ОБНОВЛЕНИЕ: Файл, связанный с вопросом, открывается в PaintShop Pro (установка старой версии 6.0) - если я затем просто повторно сохраняю в качестве стандартной кодировки JPEG, IE и Chrome отображают вновь сохраненное изображение, как я и ожидал. Определенно может показаться, что в кодировке оригинального JPEG есть что-то «странное», с которым могут справиться некоторые приложения JPEG, но не все, включая некоторых «крупных игроков», не только Delphi. :)

2 голосов
/ 24 августа 2009

Я просмотрел файл с помощью шестнадцатеричного редактора и нашел 3 заголовка JFIF. После извлечения каждой части я нашел 2 эскиза и изображение. Ничего особенного, потому что встроенные миниатюры кажутся частью стандарта EXIF2 .

Сами миниатюры прекрасно загружаются в Delphi, и преобразование файла во что-то читаемое может быть выполнено практически с любым программным обеспечением, которое я пробовал.

В любом случае, эта страница предоставит вам очень подробную информацию об изображении и о том, какие заголовки находятся внутри (просто вставьте URL вашего изображения в текстовое поле):

http://www.monster -submit.com / ресурсы / jpeganalyzer /

2 голосов
/ 23 августа 2009

Проверьте библиотеку Free Image для альтернативной поддержки JPEG в Delphi, если у нативной есть проблемы. Free Image - это библиотека с открытым исходным кодом, которая позволяет работать с JPEG / PNG / ... от Delphi / BCB / и другими. Очень хорошая библиотека ИМХО.

http://freeimage.sourceforge.net/

1 голос
/ 23 августа 2009

Я получаю ту же ошибку. Похоже, это ошибка в JPEG-библиотеке Delphi. Вы должны сообщить об этом в КК.

0 голосов
/ 25 августа 2009

SimDesign NativeJpg может открыть этот файл. Это библиотека JPEG, полностью написанная на Delphi, и автор был хорош в добавлении поддержки новых расширений и цветовых пространств, когда мы столкнулись с ними. В дополнение к потомку TGraphic для поддержки TImage он предоставляет множество низкоуровневых интерфейсов для работы с JPEG, хотя я их не использовал.

...