Can I fix photos with corrupt jpeg data?
I encountered the same issue when I was building an image classification model: I retrained the model (written in Tensorflow) using lots of images as input.
After some investigation, I found the error are caused by the image editing(crop and rotate). As the EXIF info still keep the original dimension, it doesn't match the latest dimension after editing. Fix is very easy, we can use mogrify
of imagick
to delete the outdated EXIF info.
mogrify <file name>
or
mogrify -strip <file name>
It's hard to tell without an image to try it on, but I would think ImageMagick would rewrite your images properly without the superfluous data. If you are on Linux it is probably installed, look for a program called convert
and/or mogrify
which belong to ImageMagick, else you can install it from here.
Then you want a command that does nothing too drastic to your image, so something like this should be pretty harmless:
mogrify -set comment 'Extraneous bytes removed' *.jpg
Back up your files first though, and test before applying to thousands of images!
I had the problem that the jpg file ended prematurely and mogrify wouldn't resize my images. My solution to this problem was to convert the images to png and back to jpg. This fixed the problem:
#!/bin/bash
mogrify -format png *.jpg
rm *.jpg
mogrify -format jpg *.png
rm *.png
There might be a quality loss due to compression artifacts, but for my purpose this was fine.