
У меня есть группа изображений .jpg из одного источника, которые, похоже, ведут себя нормально: я могу открывать/редактировать их с помощью eog/Kolourpaint/GIMP, их миниатюры корректно загружаются в Nautilus и т. д.
Однако когда я пытаюсь загрузить эти изображения (например, через веб-браузер на Tumblr), одно (и только одно) из них не отображается в браузере загрузки файлов Nautilus, и Tumblr возвращает ошибку, когда я пытаюсь загрузить этот файл.
Какие проблемы могут привести к тому, что в остальном корректное изображение JPEG не будет отображаться в браузере загрузки файлов Nautilus?
решение1
Это не ответ на ваш вопрос напрямую, но рецепт борьбы со «слегка поврежденными» изображениями — конвертировать лоскут...
$ convert broken.jp cbroken.png
$ convert cbroken.png good.jpg
Я обнаружил, что инструменты для обработки изображений имеют разные уровни толерантности к соблюдению спецификации. Convert, по моему опыту, и толерантен, и послушен.
решение2
По предложению sthysel я преобразовал свой поврежденный jpeg в png, что выявило проблему, а также предоставило мне рабочий png, который можно было загрузить вместо jpeg.
$ convert bad.jpg okay.png
convert: Premature end of JPEG file `bad.jpg' @ warning/jpeg.c/EmitMessage/228.
convert: Corrupt JPEG data: premature end of data segment `bad.jpg' @ warning/jpeg.c/EmitMessage/228.
Если взглянуть на фактическое содержимое bad.jpg, то, по-видимому, в нем отсутствуют байты EOF:
000d330: 8cbd e32f f164 95a4 4827 54e0 1264 8807 .../.d..H'T..d..
000d340: 8436 479f cd1e afa4 d9e3 0a .6G........
Поэтому я дополнил файл необходимыми байтами, что также помогло исправить jpeg.
000d330: 8cbd e32f f164 95a4 4827 54e0 1264 8807 .../.d..H'T..d..
000d340: 8436 479f cd1e afa4 d9e3 3fff d90a .6G.......?...
решение3
В прошлом у меня возникали проблемы с совместимостью по двум причинам:
- Превью сохранены в формате JPEG — отключите сохранение превью (если поддерживается программным обеспечением)
- Изображения CMYK, сохраненные в формате JPEG, преобразуются в RGB перед сохранением или экспортируются в формате RGB.