削除・破損したファイルの復元

誤ってごみ箱から削除してしまったファイルを復元したいときがある。デジカメで撮った写真が入っているフラッシュやSDメモリからパソコンのHDDに転送しているときに操作ミスやOSのクラッシュなどが原因で、写真ファイルが壊れてしまうこともある。そんなファイルを復元する方法について書いておく。以下では、圧縮された画像ファイルの復元と壊れた画像ファイル(JPG)の修復についてメモする。

削除ファイルの復元

数ある復元ソフトのなかで数年前から有名なのは、加藤 高明さんが作成した「復元」というソフトだろう。手元にあるのはVersion 4.2.8 (2004/11/9)だ。Vectorからフリーウェアとして配布されていたものだが、URL(http://www.vector.co.jp/soft/win95/util/se192983.html)が削除されていた。

「復元」はインストールする必要がなくフロッピーからも実行できる便利なソフト(約480KB)だ。復元用ソフトは、現在もVectorからたくさん配布されているがほとんどが有償の製品で、価格は5千円〜1万5千円である。有料ソフトを購入する必要もないので、手持ちの「復元」を使った。Vistaでも実行できた。

今回は、下記のように最悪の状態だった。

「復元」ソフトを起動する。削除したファイルの名前に含まれる文字列を指定して検索できる。「DSC」で検索すると320個、
「JPG」で511個、使用されているクラスタもサイズがゼロのファイルも検索すると673個発見された。

復元したいファイル名を選択して、「コピーして復元」ボタンを押す。

ファイル名が見つかり復元されたように見えても、ファイルの中身が正しいという保証はまったくない。たとえばDSC1841.JPGは11月1日に撮影した写真のファイル名だが、WindowsのエクスプローラやPicasa2では読めない。後述するJpegAnalyzerで読むと、一部の画像データが表示されるが、その断片は6月に撮影した伊勢神宮の写真である。

復元したファイル名や日付が違うファイルに、求める画像データがある可能性がある。したがって、ファイル名に含まれる文字列「JPG」で検索・復元したファイルをJpegAnalyzerを使って調べるのがいい。たとえば、ファイル名 $035_01.jpg の中で、二つの写真が見つかった。いずれも11月1日に撮影した写真だった。

破損したJPGファイルの復元

破損したJPG画像を修復するソフト「Jpeg Remember」(184MB)がある。フリーソフトといっているが実際はライセンスを購入(シングル3360円)しないと使えない。15日間試用できるが、機能が制限されており、たとえ修復できても保存はできない。試用したがどのファイルも読み込めなかった。売り物になるソフトとは思えない。

かみさかさんが作成したJpegAnalyzer Plus V1.42 を使った。1.7MBの軽量級だが、184MBもある有料のJpegRememberよりも有用であることが分かった。以下JpegAnalyzerを使った解析と復元を試みた経過である。

JpegAnalyzerを起動して、破損画像ファイルをドラグ&ドロップすると解析してくれる。一連のまとまった画像データがあるとプレビュー表示してくれる。

JPGファイルの先頭が「不明な領域」になっているため、普通の画像ソフトでは読めない。JPGファイルでは先頭がSOI (Start Of Imageでなければいけない。しかし、先頭領域が破損していても、JpegAnalyzerは読み込んでくれる。

00000000   <=== 不明な領域 36,352 bytes

この領域を削除すると、先頭がSOIになる。これを保存すると、JPGファイルだと認識され、エクスプローラやPicasa2で読める。SOF0に書かれている写真の大きさが230x318で、イメージデータサイズは11KBなのに、保存したファイルのサイズは613KBある。これはSOI〜EOIのセグメントが22個もあるからだ。

ファイル名が $SC_1405.JPG となっているが、ファイル名そのものが代わっており、ファイルと認識されているデータの集まりは、実際には壊れた画像ファイルの残片が連なっているということだ。

その中のひとつのSOI〜EOIの領域を選択して、「「領域画像表示」をすると別の写真が表示される。つまり、必要なSOI〜EOI以外の領域を削除すればいい。先頭のSOI〜EOI領域だけを残して保存すると、元の写真ファイル(11KB)になる。

復元した$SC_1405.jpgファイルからは、320x240程度の大きさの写真が20枚含まれていた。当然のことだが、サイズが小さい写真ほど破損せずに完全な形で残っている確率が高い。下記は、壊れた画像ファイル(左端613KB)から、JpegAnalyzerを使って復元した画像の例である。

復元できる確率