JPEG Visual Repair Tool, based on jpeg-decomp, can load JPEG images while preserving MCU (Minimum Coded Unit) coding data and allows editing at MCU level; the main purpose is to repair corrupted images. It is written in JavaScript and resides in a single html document; it can be simply saved for offline use, there are no library dependencies. A live version of the most recent commit is hosted here. Note that everything is done locally in the web browser, so no data is ever sent to the server hosting the html document.
Using it you can:
- view image info
- delete, insert, copy, paste MCUs
- change DC level of each MCU
- view the image as RGB, Y, Cb, Cr
- automatically fix color differences
- view MCU pixel levels, coefficients, and binary data-stream
- mouse wheel ⇒ zoom image
- left click ⇒ select MCU; a black or white rectangle appears on selected MCU
- shift+left click ⇒ extend selection
- left button drag ⇒ drag image
- right click ⇒ select MCU for color fixing; a red rectangle appears on selected MCU
- right button drag ⇒ extend selection for color fixing
- esc ⇒ unselect MCUs
- ctrl-c ⇒ copy selected MCUs
- ctrl-v ⇒ paste before selected MCU
- ctrl-z ⇒ undo last operation
- del ⇒ delete MCU
- arrows ⇒ change selected MCU
- f ⇒ zoom fit
- i ⇒ open MCU info dialog
- s ⇒ shift MCU rendering using left/right keys
- 1-2-3-4 ⇒ change view (RGB, Y, Cb, Cr)
- ] [ ⇒ zoom in/out
A crossed red rectangle appears on MCUs that produced decode errors.
Limitations: no support for progressive scans or arithmetic encoding.
Corrupted images can be edited block by block (MCU) without losing information; even bright or dark areas still contain the original details. The problem often lies in the DC levels of specific MCUs.
First align image features by deleting spurious MCUs (effect of corruption); the shift feature (s+arrows) comes handy in determining how many blocks to delete.
Equalize colors either manually (DC+/DC- while viewing a single channel) or automatically (using Fix colors on right-selected MCUs)
Finally, save as a new image
For more details see the tutorial on how to repair a corrupted JPEG image
Or this video tutorial: