«Файл не содержит данных изображения», но я могу ненадолго увидеть изображение в средстве просмотра камеры. Есть ли способ восстановить изображения?

Итак, у меня есть примерно 85 изображений, которые дают мне ошибку «Файл не содержит данных изображения». Странно то, что я могу ненадолго увидеть изображение на камере, прежде чем выскочит ошибка. Когда я пытаюсь просмотреть изображения на компьютере, я ничего не вижу в средстве просмотра изображений Windows или вижу только часть изображения. Есть ли способ вернуть исходные данные для каждого файла? Я пробовал Photorecovery, но он не находит поврежденные файлы. Когда я запускаю chkdsk на диске, Windows говорит, что ошибок нет. Любая помощь будет принята с благодарностью.

Это файлы JPEG или RAW?
Возможно, вы видите «миниатюру», которую показывает программное обеспечение камеры перед загрузкой фактического (но поврежденного или отсутствующего в вашем случае) изображения? Чтобы помочь нам, пожалуйста, опубликуйте размеры файлов, указанные на вашем ПК. Кстати, chkdsk не проверяет содержимое файла, а только записи каталога.

Ответы (3)

Я ничего не вижу в средстве просмотра изображений Windows или вижу только часть изображения.

Я буду предполагать, что формат файла - JPEG.

В какой-то момент я обращусь к написанному мною условно-бесплатному инструменту, который может несколько упростить ремонт. Но прежде чем я это сделаю, я покажу вам, как я восстановил файлы JPEG с помощью бесплатного программного обеспечения.

Итак, здесь есть две проблемы:

  • Файл вообще не открывается; так что как минимум заголовок поврежден
  • Файл откроется, но будет обрезан или, по крайней мере, выглядит

Файл вообще не открывается

Итак, в этом случае заголовок недействителен, но, возможно, намного больше. Поэтому перед тем, как пытаться восстановить заголовок, имеет смысл открыть файл в шестнадцатеричном редакторе и посмотреть, что у нас получилось. Мой любимый шестнадцатеричный редактор, который оказывается бесплатным, — это HxD .

Первое, что мы сделаем, это посмотрим, есть ли на самом деле данные, любые данные:

введите описание изображения здесь

В этом случае становится очевидным, что мы не сможем восстановить файл. Но как насчет:

введите описание изображения здесь

Сначала мы просматриваем примерно половину пути к файлу, обычно мы были бы уверены, что смотрим там закодированные данные JPEG. JPEG — это данные с высокой энтропией. Это означает хаотические непредсказуемые данные. Данные на изображении кажутся мне довольно хаотичными, так что это было бы хорошо, и все же данные, которые я выбрал для примера, не являются данными JPEG, и я расскажу, как вы можете это обнаружить:

В спецификации JPEG байт FF имеет особое значение, поскольку он сообщает декодеру JPEG, что мы имеем дело с маркером JPEG. FF всегда сопровождается вторым байтом, который сообщает декодировщику, с каким маркером он имеет дело. Например, FF D9 — это маркер конца изображения. FF DA — маркер начала сканирования. Я храню список всех известных мне маркеров здесь: https://www.disktuna.com/list-of-jpeg-markers/ .

введите описание изображения здесь

Это также означает, что вы не найдете маркеров внутри закодированных данных JPEG, поскольку любая комбинация байтов FF xx заставит декодер подумать, что он столкнулся с маркером JPEG, с которым он должен что-то делать. Хотя есть несколько исключений:

FF 00 действителен, а FF nn, где nn — от D0 до D7. Так что FF D3 действителен. Однако в дампе мы видим, например, FF 9A или FF 5E, которые мы никогда не увидим в действительных данных JPEG.

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

Чтобы «исправить» заголовок, используя HxD и справочный файл, предполагая, что повреждение ограничено заголовком:

Откройте поврежденный файл в HxD, Search> Find, найдите FF DA, используя тип данных HEX. Если файл не найден, он не подлежит восстановлению. Возможно, найдено несколько экземпляров FF DA, вам нужен ПОСЛЕДНИЙ. Их может быть несколько, если JPEG включает миниатюру и предварительный просмотр.

Запишите адрес (используя View > Offset base, вы можете переключиться на десятичные числа, если хотите). Теперь ищите FF D9. Или перейдите в конец файла, где вы обычно найдете FF D9.

Найдя, выберите весь блок, включая последний FF DA до и включая FF D9> щелкните правой кнопкой мыши> копировать.

Откройте новый файл> Вставить Вставить> Сохранить как «image.jpg». Теперь вы скопировали данные изображения в новый файл.

Откройте заведомо исправный файл, снятый той же камерой, с тем же разрешением и ориентацией (портрет/пейзаж).

Используйте Search > Find, найдите FF DA, используя тип данных HEX.

Возможно, найдено несколько экземпляров FF DA, вам нужен ПОСЛЕДНИЙ.

Выберите блок, предшествующий байтам FF DA, вплоть до начала файла (FF D8).

Переключитесь на вкладку файла image.jpg, содержащую данные изображения, убедитесь, что вы находитесь на смещении 0 (ноль)> Вставить Вставить> Сохранить файл.

Недостатком этого метода является то, что если эталонный файл содержит предварительный просмотр, этот предварительный просмотр будет скопирован и в восстановленный файл.

Изображение появляется только частично

Причин может быть несколько:

  • Файл усечен: сравните размер поврежденного файла с размером неповрежденного файла JPEG, снятого на том же устройстве. Если размер файла составляет только половину ожидаемого размера, то следует ожидать, что половина изображения отсутствует. Вы не можете исправить это.

  • Я также вижу, что файл заполнен только наполовину. Таким образом, если вы откроете файл в формате HxD и обнаружите, что большая часть файла внизу состоит из нулей, то данные изображения просто отсутствуют.

  • Последнее, и это иногда можно исправить, это поврежденные данные в закодированных данных JPEG. Как мы видели ранее, недопустимые комбинации байтов FF xx заставят декодер (средство просмотра фотографий) подумать, что он встретил маркер JPEG. В зависимости от программного обеспечения он может просто зависнуть и прекратить декодирование или выдать сообщение об ошибке, например «недопустимый маркер JPEG».

Бесплатный инструмент JpegSnoop сообщит о таких маркерах.

введите описание изображения здесь

Я смог получить изображения для декодирования, которые имели только один или два из этих недопустимых маркеров, используя HxD, просто заменив недопустимый маркер FF xx на FF 00, как вы можете видеть в приведенном ниже примере.

введите описание изображения здесь

Инструмент, который может сделать это и упростить: JPEG-Repair

Узнав обо всех этих вариантах ремонта, я написал инструмент (который все еще активно развивается), который может сделать многое из этого проще. Кроме того, он, например, удаляет заголовок эталонного файла из данных, характерных для эталонного файла, таких как миниатюра предварительного просмотра.

Это также позволяет мне быстро обнаруживать проблемы с файлом. Он показывает байтовую гистограмму и вычисляет энтропию.

введите описание изображения здесь

В этом примере вы можете видеть, что энтропия слишком низкая (поэтому она отображается красными символами, а не зелеными), а также байтовая гистограмма совсем не похожа на неповрежденный JPEG.

введите описание изображения здесь

Короче говоря, он может:

  • Восстановите заголовки, используя эталонный файл (в пакетном режиме). Эта функция предполагает, что фактические данные изображения не повреждены.
  • Извлеките встроенные файлы JPEG. Он может делать это и из многих форматов RAW, даже если они сильно повреждены. Многие форматы RAW содержат предварительный просмотр в формате JPEG среднего качества с полным разрешением.
  • Исправьте необработанные данные изображения, которые могут помочь восстановить, например, полусерые JPEG-файлы. Когда необработанные данные сжимаются, инструмент Хаффмана распаковывает JPEG в памяти, чтобы он мог сопоставить координаты на изображении с необработанными данными.
Привет Джоеп, это довольно написать! Я думаю, что ссылка на ваш инструмент совершенно уместна и имеет отношение к вашему ответу. Пока вы сообщаете, что написали это (вы уже делаете это), добавление ссылки — это нормально.
Saaru Lindestøkke 37 спасибо за подсказку! Я отредактировал свой ответ.

Поврежденные файлы обычно невозможно восстановить без резервных копий.  Как комментирует Карл Виттофт , описанные вами симптомы могут быть объяснены:

... вы видите «миниатюру», которую показывает программное обеспечение камеры перед загрузкой фактического (но поврежденного или отсутствующего в вашем случае) изображения ...

Дополнительная информация может помочь выяснить источник вашей проблемы, но не улучшит прогноз:

  • Марка и модель фотоаппарата?
  • Формат файла?
  • Приблизительные размеры файлов нормальных и поврежденных изображений?

Используя соответствующее программное обеспечение, перестройте каталог чипа/карты. В большинстве случаев проблема с восстановлением файлов связана с поврежденным каталогом, который я с радостью обнаружил. У некоторых (Sandisk) есть удобные утилиты именно для этого кошмара. После того, как это случилось со мной, мой коллега неоднократно запускал программу для меня, и каждый раз восстанавливалось все больше файлов. Не только мой последний сеанс был сохранен, но и другие до трех лет назад.

Не все может быть потеряно.

Удачи.