Могу ли я исправить фотографии с поврежденными данными jpeg?
Мой телефон (android, fwiw) делает снимки, которые повреждены. Я не уверен, почему и как это делается, но, похоже, это мешает мне загружать фотографии в некоторые службы. Если я переведу фотографии на свой компьютер и откройте их в GIMP, я вижу предупреждающее сообщение:
Corrupt JPEG data: 1130 extraneous bytes before marker 0xd9
Ошибка не мешает мне просматривать или редактировать фотографии, но мне интересно, есть ли способ настроить пакетный процесс, который бы устранил эту проблему?
Ответы
Ответ 1
Трудно сказать без изображения, чтобы попробовать, но я думаю, что ImageMagick будет правильно переписывать ваши изображения без лишних данных. Если вы на Linux, вероятно, установлен, найдите программу под названием convert
и/или mogrify
, которая принадлежит ImageMagick, иначе вы можете установить ее из здесь.
Затем вам нужна команда, которая не делает ничего слишком резкого для вашего изображения, поэтому что-то вроде этого должно быть довольно безвредным:
mogrify -set comment 'Extraneous bytes removed' *.jpg
Сначала создайте резервную копию файлов, прежде чем применять их к тысячам изображений!
Ответ 2
У меня возникла проблема, что файл jpg закончился досрочно, а mogrify не изменит размеры моих изображений. Моим решением этой проблемы было преобразование изображений в png и обратно в jpg. Это устранило проблему:
#!/bin/bash
mogrify -format png *.jpg
rm *.jpg
mogrify -format jpg *.png
rm *.png
Может быть потеря качества из-за артефактов сжатия, но для моей цели это было хорошо.
Ответ 3
Я столкнулся с той же проблемой при создании модели классификации изображений: я переобучил модель (написанную в Tensorflow), используя множество изображений в качестве входных данных.
После некоторого исследования я обнаружил, что ошибка вызвана редактированием изображения (обрезка и поворот). Поскольку информация EXIF по-прежнему сохраняет исходное измерение, оно не соответствует последнему измерению после редактирования. Исправить очень просто, мы можем использовать mogrify
из imagick
, чтобы удалить устаревшую информацию EXIF.
mogrify <file name>
или
mogrify -strip <file name>