If try to open a JPEG file with a corrupt header in the Windows Photo Viewer it will tell you:
“Windows Photo Viewer can’t open this picture because the file appears to be damaged, corrupted or is too large.”
In this blog post we’ll address:
- Check if JPEG can be repaired using a hex editor
- Repair corrupt header resulting in error ‘File appears to be damaged, corrupted or is too large’ using a hex editor (free)
- Repair using a JPEG Repair Utility
This message indicates that at least the header of the JPEG is corrupt. If damage is limited to the header then it is likely the picture can be repaired if you have a known good image shot with the same camera. If damage extends beyond the header repair is unlikely but not impossible!.
|Howto fix File appears to be damaged, corrupted or is too large with JPEG-Repair:|
|This repair (File appears to be damaged, corrupted or is too large) requires a reference file! A reference file is a JPEG that was shot with the same camera + settings (quality, size and orientation). If resulting repaired file looks somewhat like this (somewhat recognizable but still distorted with recognizable pattern) then you selected a sample with the wrong orientation or resolution:
In that case try a different reference file from same camera or if not available try: https://www.disktuna.com/jpeg-visual-corruption/
Check if picture can be repaired
Most pictures that are sent to my JPEG Repair service that are beyond repair suffer from:
- Entirely filled with zeros
- Entirely filled with a repeating byte pattern (FF FF FF etc.)
It’s obvious when the software (Windows Photo Viewer) tried to parse such a file starting with file header, it will immediately run into trouble. it will respond with it’s catch all corrupt header error message “Windows Photo Viewer can’t open this picture because the file appears to be damaged, corrupted or is too large.”
You can check this using a hex editor like HxD.
If the file however contains data, you can try repairing the corrupt JPEG.
Not repaired ..
You can watch the value for Entropy and the byte histogram to see if this is caused by an empty file (zeros) or a file filled with a byte pattern. These are the two most common issues causing a file to be beyond repair.
Entropy looks good but repair is unsuccessful?
Note that good entropy does not mean by definition JPEG. You may get similar entropy when the file is filled with other compressed data. However there a few things you can try (and that worked for me in the past sometimes):
- Run Extract JPEG option on JPEGs. I have had success using this method getting full and partial (but still usable) images from incorrectly recovered photos. Procedure is the same as for extracting JPEG from RAW (see video, procedure for extracting JPEG from JPEG is identical).
- Use Patch + Append option. This requires a sample or reference file that was shot with the same camera and settings (such as quality).
If extracting JPEG from the corrupted files yields no results then the file contains no complete JPEG file(s). However, since entropy is good there is still a chance there is encoded JPEG data within the file that can be reconstructed. To find out you have to examine the files one by one (no batch).
Advanced repairs using JPEG-Repair Toolkit
This is an advanced repair that requires manual input. You will also need a sample / reference file that is taken with the same camera + settings. You need to rename the reference file to sample.jpg and place it in the same folder as the file you want to repair.
|Carve JPEG data from file and append valid JPEG header|
Repair a JPEG header using a hex editor
Using HxD: Use Search > Find, search for FF DA using HEX data type. If not found the file is beyond repair.
It is possible multiple instances of FF DA are found, you need the LAST one. There may be a few if the JPEG included a thumbnail and preview.
Note: If you find many FF DA byte combinations then you’re probably not looking at JPEG data but random binary data. The file then is probably beyond repair.
Write down the address (Using View > Offset base you can switch to decimal numbers if you like). Now search for FF D9. Or, go to end of the file which is where you’d normally find FF D9.
Once found, select the entire block including the last FF DA upto and including FF D9 > right click > copy.
Open a new file > Paste Insert > Save as ‘image.jpg’. You have now copied the image data to a new file.
Open a known good file that was shot with the same camera, using same resolution and orientation (portrait/landscape).
Use Search > Find, search for FF DA using HEX data type.
It is possible multiple instances of FF DA are found, you need the LAST one.
Select the block preceding the FF DA bytes all the way to the start of the file (FF D8)
Switch to your image.jpg file TAB containing the image data, make sure you’re at offset 0 (zero) > Paste Insert > Save the file.
If damage was limited to the header you should now be able to open your file. Open and Save it using something like Paint.NET (free) to update the file thumbnail (if any).