(57)【特許請求の範囲】
【請求項１】
メモリに記憶された画像ファイルを演算処理部が処理することによって管理するファイル管理装置において、
前記画像ファイルに関する拡張情報と、当該拡張情報の先頭位置を指定するポインタ情報とを取得する取得手段と、
前記拡張情報と前記ポインタ情報とが前記画像ファイルの末尾に続くファイルであって、前記ポインタ情報が該ファイルの末尾の位置にあるファイルを前記メモリに登録する登録手段と
を具備するファイル管理装置。
【請求項２】
前記拡張情報は前記画像ファイルのサムネイル画像を含むことを特徴とする請求項１に記載のファイル管理装置。
【請求項３】
前記拡張情報は前記画像ファイルのコメントに関する情報を含むことを特徴とする請求項１又は２に記載のファイル管理装置。
【請求項４】
前記登録手段は、前記ポインタ情報を前記拡張情報の末尾に続くように登録することを特徴とする請求項１乃至３のいずれか１項に記載のファイル管理装置。
【請求項５】
前記登録手段は、前記拡張情報の先頭に、拡張情報であることを示す所定の識別情報を登録することを特徴とする請求項４に記載のファイル管理装置。
【請求項６】
メモリに記憶された画像ファイルを演算処理部が処理することによって管理するファイル管理方法において、
前記画像ファイルに関する拡張情報と、当該拡張情報の先頭位置を指定するポインタ情報とを取得する取得工程と、
前記拡張情報と前記ポインタ情報とが前記画像ファイルの末尾に続くファイルであって、前記ポインタ情報が該ファイルの末尾の位置にあるファイルを前記メモリに登録する登録工程と
を具備するファイル管理方法。
【請求項７】
前記拡張情報は前記画像ファイルのサムネイル画像を含むことを特徴とする請求項６に記載のファイル管理方法。
【請求項８】
前記拡張情報は前記画像ファイルのコメントに関する情報を含むことを特徴とする請求項６又は７に記載のファイル管理方法。
【請求項９】
前記登録工程においては、前記ポインタ情報を前記拡張情報の末尾に続くように登録することを特徴とする請求項６乃至８のいずれか１項に記載のファイル管理方法。
【請求項１０】
前記登録工程においては、前記拡張情報の先頭に、拡張情報であることを示す所定の識別情報を登録することを特徴とする請求項９に記載のファイル管理方法。
【請求項１１】
請求項６乃至１０のいずれか１項に記載のファイル管理方法をコンピュータに実行させるプログラムを記憶する、コンピュータにより可読な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像ファイルなどのファイルを管理するファイル管理装置、ファイル管理方法および記憶媒体に関する。
【０００２】
【従来の技術】
従来より、画像処理装置において、デジタルカメラ等の外部の画像記憶装置からカラー画像を画像処理装置に読み込み、それら読み込んだ画像をファイルとして保存することが行われてきた。また、それら画像に対して撮影日時やコメントを付加し、画像を表示する際に撮影日時やコメントも同時に表示したり、複数の画像の中から、ある特定の撮影日時情報を持つ画像や、特定のコメントを含む画像を画像検索することが行われてきた。
【０００３】
その際、扱うことができる画像は、JPEG形式やEXIF形式等の特定のフォーマット（さらにはこれらの準じたもの）に限定し、それらのフォーマットの画像を取り扱う場合には、その画像ファイルフォーマットで規定されている仕様に従って、撮影日時やコメントを付加し、それらを編集、参照するというのが一般的であった。
【０００４】
しかしながら、近年の情報処理機器の普及によって、画像処理装置が扱わなければならない画像ファイルの種類は多様化している。この多様化は種々の問題を引き起こしている。
例えばインターネットでダウンロードしてきたGIF形式の画像ファイルを扱う場合は、コメント付加に関するGIF形式の仕様が、画像ファイルとしては一般的なJPEG形式やEXIF形式と異なるため、コメントを付加する際の処理を別に用意しなければならなかった。
【０００５】
また、BMP形式の画像ファイルの場合は、BMP形式は画像ファイルに対して撮影日時やコメントを付加する仕様を有さないため、撮影日時などのコメント情報を付加することを諦めるか、付加情報を管理する別のファイルを用意する必要が有った。しかし、この場合、BMP形式の画像ファイルを複製する場合、付加情報も同時に複製しなければならないなど、複数の画像を管理する上で問題があった。
【０００６】
即ち、従来では、全ての画像ファイルフォーマットに共通のコメントなどに関する付加情報についての統一的な仕様が存在しなかった。
一方、異なる画像ファイルフォーマット間での画像ファイル自体の変換法も存在する。従って、標準でないコメント形式を有する画像ファイルを標準的なコメント形式を有する画像ファイルフォーマットに変換することにより、コメント情報のフォーマットを事後に統一化することも考えられないことではない。しかし、このフォーマット変換を行うためには、変換前の画像ファイルの形式がGIF形式やBMP形式であった場合に、それら画像ファイルをJPEG形式やEXIF形式に変換して保存する際に画像情報の一部が失われることがあるため、特定のパターンの画像ファイルでは画像が劣化してしまい、オリジナル画像と変換後の画像が全く異なる画像になってしまう問題があった。即ち、画像ファイルを標準的な画像ファイルフォーマットへの変換を行うことによってコメント情報を統一的に扱えるようにすると、別の問題を引き起こしてしまうのである。
【０００７】
以上のように、現存する多様な画像ファイルフォーマットに対して、撮影日時やコメント等の情報を統一的な手段で付加するのは不可能であった。
本発明は、ファイルに対して、サムネイル画像若しくは撮影日時やコメント等の拡張情報を付加するための、ファイルの種類に依存しない統一的な管理方法および装置を提案するものである。
【０００８】
本発明の他の目的は、ファイルの種類に依存しないで拡張情報を付加することができるのみならず、既存のオペレーティングシステムのファイル管理と互換性を有するようなファイル管理方法および装置を提案するものである。
【０００９】
【課題を解決するための手段】
上記課題を達成するために、請求項１に係るところのファイル管理装置は、
メモリに記憶された画像ファイルを演算処理部が処理することによって管理するファイル管理装置において、
前記画像ファイルに関する拡張情報と、当該拡張情報の先頭位置を指定するポインタ情報とを取得する取得手段と、
前記拡張情報と前記ポインタ情報とが前記画像ファイルの末尾に続くファイルであって、前記ポインタ情報が該ファイルの末尾の位置にあるファイルを前記メモリに登録する登録手段と
を具備することを特徴とする。
【００１１】
上記課題は請求項６に記載されたファイル管理方法によっても達成される。このファイル管理方法は、メモリに記憶された画像ファイルを演算処理部が処理することによって管理するファイル管理方法において、
前記画像ファイルに関する拡張情報と、当該拡張情報の先頭位置を指定するポインタ情報とを取得する取得工程と、
前記拡張情報と前記ポインタ情報とが前記画像ファイルの末尾に続くファイルであって、前記ポインタ情報が該ファイルの末尾の位置にあるファイルを前記メモリに登録する登録工程と
を具備する。
【００１９】
【発明の実施の形態】
以下、図面に基づいて、本発明の実施形態を詳細にかつ具体的に説明する。
〈ハードウエア構成〉
図１は、本発明が適用された情報処理装置、即ち、パソコンやワークステーションの構成を示すブロック図である。同図において、１は中央演算処理装置(ＣＰＵ)であり、２は読み出し専用メモリ(ＲＯＭ)であり、３は読み書き可能なメモリ(ＲＡＭ)であり、４は外部に増設された読み出し専用メモリ(外部ＲＯＭ)であり、５はキーボード制御装置(ＫＢＣ)であり、６はキーボード(ＫＢ)であり、７は表示制御装置(ＣＲＴＣ)であり、８は表示装置(ＣＲＴ)であり、９は周辺装置制御装置(ＰＫＣ)であり、１０は外部記憶装置(ＦDおよびＨD)であり、１１はリアルタイムクロック（ＲＴＣ）であり、１２はそれら装置間のデータの送受信を行うためのシステムバスである。
【００２０】
本情報処理装置のプログラムは、ＲＯＭ２あるいはＲＡＭ３上に存在する。ＣＰＵ１は、システムバス１２を通じてプログラムをＲＯＭ２あるいはＲＡＭ３から逐次読み出しつつ、目的の処理を行う。
〈ファイル管理の概要〉
本発明が適用された図１のパソコンシステムにおける画像ファイルの管理の概要を説明する。
【００２１】
図２は、このパソコンシステムのソフト構成を示す。即ち、本システムでは、・サムネイル画像付加機能
・サムネイル画像参照
・撮影日時参照機能
・コメント修正機能
・コメント参照機能など
が用意されている。これらの機能はオペレーティングシステム（例えば、WINDOWSやMACシステムなどのオペレーティングシステム）に付加される。即ち、図２において、拡張機能モジュールは、オペレーティングシステムに組み込まれると、オペレーティングシステムのディレクトリ参照機能に上記機能を付加すべく、例えば、コメントを参照するか否かを問うダイアログ、コメントを修正するか否かを問うダイアログや、サムネイル画像を付加するか否かを問うダイアログや、サムネイル画像を参照するか否かを問うダイアログや、撮影日時を参照するか否かを問うダイアログ等を表示し、これらのダイアログを解して入力されたユーザ応答を後述の制御手順に従って処理することができる。
【００２２】
尚、この拡張モジュールは、当初からオペレーティングシステムに組み込まれていても良いし、または、フロッピディスクなどの記憶媒体に記憶しておき、このディスクを解して新たにインストールしても良い。
尚、この拡張機能が一旦インストールされると、任意のアプリケーションプログラムは、上記機能を実行するためのシステムコールを生成することが許され、そのようなシステムコールが発行されると、オペレーティングシステムと拡張機能モジュールがそのシステムコールを実行する。
【００２３】
図３は、上記拡張機能によって実演される上記機能の概略を示す。
図中、オリジナル画像ファイルは、通常の例えばBMP形式やJPG形式等の公知の画像ファイルである。本拡張機能は、このような画像ファイルに、フッタブロックを付加する（フッタブロックを付加された画像ファイルを「フッタ付き画像ファイル」と呼ぶ）。上記機能は、フッタブロックが付加された画像ファイルに対して実現可能となる。即ち、フッタ付き画像ファイルに対して、サムネイル画像が付加され、あるいは、または、更に、コメントが付加される。付加されたサムネイル画像やコメントは、参照され、あるいは修正可能となる。
【００２４】
図４は、フッタ付き画像ファイルの構造を説明する。即ち、フッタ付き画像ファイルは２つのブロックからなり、これらのブロックは、
・オリジナル画像ブロック（Bo）、
・フッタブロック（Bf）
である。記憶装置中のフッタ付き画像ファイルの先頭アドレスと大きさは、当該の画像ファイルのディレクトリによって与えられる。
【００２５】
フッタ付き画像ファイルにサムネイル画像が付加されると、そのサムネイル画像は、図５に示すように、「サムネイル画像ブロックBt 」に含まれ、このサムネイル画像ブロックBtが上記オリジナル画像ブロックBoとフッタブロックBfとの間に付加される。
サムネイル画像ブロックBt は、オリジナル画像に依存するので、その大きさは可変であり、フッタブロックBfは、後述するように可変長のコメントフィールドを含むので、その大きさは可変である。
【００２６】
図６にフッタブロックBfの構成を示す。即ち、フッタブロックBfは、
・ＩDフィールドFi（４バイト）：  当該フッタブロックの識別子を格納。フッタブロックについては“DSIM”が格納される。
・コメントフィールドオフセットFc（４バイト）：  コメントフィールドまでのオフセット量（バイト数）
・画像生成日時フィールドFd：  オリジナル画像を生成した日時
・オリジナル画像水平方向画素数FW（２バイト）
・オリジナル画像垂直方向画素数Fh（２バイト）
・オリジナル画像解像度Fr（２バイト）：  オリジナル画像の解像度dpi値
・サムネイル画像フィールドFt：  詳細は図９に示される
・フッタ先頭へのオフセットFe
フィールドFeは、当該画像ファイルの先頭（即ち、オリジナル画像ブロックBoの先頭）から当該画像ファイルのフッタブロックBfまでのオフセット量（バイト）を格納する。即ち、オリジナル画像ブロックBoの先頭および大きさはシステムディレクトリのTOPとSIZEから知ることができるので、オフセット量Feは、アドレスTOP + SIZEに記憶されている値となる。従って、TOPに、TOP + SIZEから読み出した値Feを加えた値、
TOP + Fe
のバイト位置が、図５に示すように、フッタブロックの先頭位置を示す。
【００２７】
画像生成日時フィールドFdの形式を図８に示す。本フィールドは、その画像が生成された日時を西暦2バイト、月１バイト、日１バイト、時１バイト、分１バイト、秒１バイト、1/100秒１バイトの順に格納する領域である。
サムネイル画像フィールドの構成を図９に示す。図９において、
・種類Tt（４バイト）：  サムネイル画像の種類が格納される。サムネイル画像のデータ形式にしたがって、"JPG"や"TIF"や"BMP"のような一般的な画像ファイルに用いられる3文字の拡張子を収め、余った1バイトには０を格納する。
・サムネイル画像水平方向画素数TW（２バイト）
・サムネイル画像垂直方向画素数Th（２バイト）
・サムネイル画像ブロックのオフセットTb（４バイト）
である。サムネイル画像ブロックのオフセットTbは、図５に示すように、当該画像ブロックの先頭から、当該サムネイル画像ブロックBtまでのオフセット量を格納する。このサムネイル画像フィールドも図９に示すように、その先頭位置は、そのフィールドの末尾に書き込まれたオフセット量によって示されている。即ち、サムネイル画像フィールドの先頭位置は、コメントブロックの先頭位置の指定と同じように、末尾に格納されたオフセット量Tbによって示される。
【００２８】
図７は、サムネイル画像フィールドとコメントフィールドを有した場合のフッタブロックの構成を示す。図６に示したフッタブロックと図７のフッタブロックとの相違は、コメントフィールドFsが、サムネイル画像フィールドFtとオフセットFeとの間に挿入されていることである。
コメントフィールドの構成を図１０に示す。コメントフィールドは、
・Cb（２バイト）：  コメントの文字列のバイト数
・Cs（可変長）：  コメントの文字列
からなる。
【００２９】
サムネイル画像フィールドFtは、図９に示したように固定長であり、且つ図７に示すように、フッタブロック中で、IDフィールドFiからサムネイル画像フィールドFtまでの項目は全て固定長であるので、サムネイル画像フィールドFtを参照することはできるから、サムネイル画像フィールドFtへのオフセット量をフッタブロック中に記憶させる必要はない。一方、コメントフィールドFsは可変長のデータを含むので、コメントフィールドFsへのオフセット量をコメントフィールドオフセットFcとして記憶させる。
【００３０】
尚、オリジナル画像ブロックBoは可変長であるので、サムネイル画像ブロックBtの位置の可変であるので、サムネイル画像ブロックBtへのオフセット量をサムネイル画像フィールド（図９）のサムネイル画像ブロックのオフセットTbとして記憶する。
〈諸機能の説明〉
図１２乃至図１８は、本発明を適用した画像ファイル管理機能モジュールの上記諸機能を実現する制御手順のフローチャートを示している。これらのフローチャートを使用して、画像ファイル管理機能モジュールを付加された図１のパソコンシステム装置の動作を以下順をおって説明する。
【００３１】
〈フッタブロック情報の付加〉
最初に、オリジナル画像ファイルにフッタブロック情報を付加する処理について図１２のフローチャートを用いて説明する。
先ずステップＳ１０１では、オリジナル画像を指定しファイルをオープンする。オリジナル画像の指定は、図２で説明したように、ユーザがその画像ファイルを指定しても良いし、アプリケーションプログラムからシステムコールを介して指定しても良い。次にステップＳ１０２ではフッタブロックをオリジナル画像ファイルに付加する処理を行う。ステップＳ１０２の処理の詳細は図１３を参照して説明されるであろう。次にステップＳ１０３では、ファイルをクローズし画像ファイルを保存する。
【００３２】
以上一連の処理によって、オリジナル画像ファイルをフッタ付きの画像ファイルに変換する。尚、ユーザが指定した画像ファイルやアプリケーションプログラムが指定した画像ファイルにフッタが既に付加されていた場合には、図１２の制御手順は実行されない。
フッタ付き画像ファイルは、図４で説明したように、オリジナル画像ブロックB0と、このブロックB0に続くフッタブロックBfとからなる。オリジナル画像ブロックB0にはステップＳ１０１において指定されたオリジナル画像がそのまま格納される。
【００３３】
図１３は、ステップＳ１０２の処理、即ち、フッタブロックの初期生成処理をより細かく説明するフローチャートである。この初期生成処理では、先ずステップＳ２０１において、フッタブロックの情報を一時格納するためのワーク領域をフッタブロックの大きさ分だけＲＡＭ３上に確保する。図６又は図７に示されたフッタブロックのＩDフィールドFiは、フッタブロックの先頭を表す４バイトの固有の文字列“DSIM”を格納する。換言すれば、ＩDフィールドが“DSIM”であるようなブロックはフッタブロックである。
【００３４】
図１９を参照しながら、ステップＳ２０１でフッタブロックのサイズ分のワークを獲得後、ステップＳ２０２では、獲得したワーク上のフィールドFiに文字列“DSIM”をセットする。次に、ステップＳ２０３では、コメントフィールドのオフセットFcを“０”で初期化する。次にステップＳ２０４では、オリジナル画像から撮影日時情報を取得する。オリジナル画像がEXIF形式やCIFF形式のように、撮影日時情報の格納位置が特定可能なファイル形式である場合には、各々の形式に従って、撮影日時情報格納領域から撮影日時情報を取得する。また、オリジナル画像が一般的なJPEG形式や、BMP形式のように撮影日時情報の格納位置が不明であったり、撮影日時情報そのものが格納されていない場合は、オリジナルファイルの生成日時を撮影日時情報として取得する。これらの情報の取得は従来から行われている既知の手法により行う。
【００３５】
次に、ステップＳ２０５ではステップＳ２０４において取得した撮影日時情報を画像生成日時フィールドFdの形式に変換する。変換前の日時情報から、画像生成日時フィールドFdの年Dy、月Dm、日Dd、時間Dh、分Dt、秒Ds、1/100秒Dbのうち何れかの情報が生成できない場合は、生成できなかった情報に０をセットする。
【００３６】
次に、ステップＳ２０６ではオリジナル画像から水平方向画素数を取得し、それをRAM３上のフッタブロックのFwにセットする。次にステップＳ２０７では、オリジナル画像から垂直方向画素数を取得し、それをフッタブロックのFhにセットする。次にステップＳ２０８では、オリジナル画像から画像の解像度を取得して、それをdpi値に変換後フッタブロックのFrにセットする。オリジナル画像の水平方向画素数情報、垂直方向画素数情報、および解像度情報が格納されている位置は、オリジナル画像のファイル形式により異なるため、各々のオリジナル画像ファイル形式の仕様に従って各情報を取得する。
【００３７】
次にステップＳ２０９では、サムネイル画像フィールドFtをすべて０で初期化する。次にステップＳ２１０では、当該画像ファイル（即ち、オリジナル画像ブロックBo）の先頭から、このフッタブロックの先頭へのオフセット値Feとしてオリジナル画像ファイルのサイズ（＝SIZE）をセットする。
次にステップＳ２１１では、RAM３のワーク上のフッタブロック情報（図１９）を、図４にしめすように、オリジナル画像ファイルBoの末尾に付加する。
【００３８】
以上の一連の処理によって、オリジナル画像ファイルを図６，図７に示すフッタブロック付きの画像ファイルに変換することができる。
図１３のステップＳ２１０でオフセット値Feとしてオリジナル画像ファイルのサイズ（＝SIZE）をセットすることにより、サムネイル画像などが付加されていないフッタ付き画像ファイルについてのフッタブロックが図２０に示すように生成される。この画像ファイルのフッタブロックは、図２０に示すように、オリジナル画像ブロックBoの後に続くので、Feの値＝オリジナル画像のSIZEとすることで、このフッタブロックはFeを参照することにより容易に参照可能となる。
【００３９】
尚、オリジナル画像とフッタブロック付きの画像ファイルは同一のファイル名として処理する。
また、図１３の制御手順はフッタブロックを初めて付加するものであるから、この制御手順が処理する対象の画像ファイルにはサムネイル画像ブロック（さらにはコメントフィールド）が付加されていない。従って、図１３の制御手順では、サムネイル画像に関するTt、TW、Th、Tbには全てに０を格納する。また、図１３の制御手順では、図７に示されたコメントフィールドFsは生成されない。
【００４０】
〈サムネイル画像の付加〉
次にフッタ付き画像ファイルにサムネイル画像を付加する処理について図１４を参照して説明する。図１３のフローチャートに示された制御手順は、特定のフッタ付き画像ファイル（例えば図１３の制御手順で生成されたフッタ付き画像ファイル）に対して、ユーザ若しくはアプリケーションプログラムがサムネイル画像の付加指示を行うことから始まる。
【００４１】
先ず、ステップＳ３０１では、指定されたフッタ付き画像ファイルをオープンする。次にステップＳ３０２では、この画像ファイルのディレクトリのSIZE情報に基づいて、この画像ファイルのフッタブロックのオフセットフィールドFeをRAM３上のワーク領域に取得する。オフセットFeは、フッタブロックの先頭へのオフセットである。
【００４２】
次にステップＳ３０３では取得したFeの値とファイルサイズSIZEを比較する。図４又は図５から明らかなように、Fe＜SIZEでなくてはならない。従って、Fe＜SIZEでない場合はステップＳ３１４に進んでファイルをクローズしエラー終了する。またFe＜SIZEである場合はステップＳ３０４に進む。
次にステップＳ３０４では、ファイルの先頭からのオフセット量がFeである位置から始まるのはフッタブロックであるか否かを確認するために、その位置での４バイトの文字列が“DSIM”あるか否かを調べ（図２１を参照）、一致しない場合はステップＳ３１４に進んでファイルをクローズしエラー終了し、一致した場合はステップＳ３０５に進んで処理を継続する。
【００４３】
次にステップＳ３０５ではサムネイル画像をRAM３上に生成する。即ち、サムネイル画像をオリジナル画像から生成するために、フッタ付き画像ファイルの先頭からオリジナル画像を取り出し、それを元にサムネイル画像をRAM３上に生成する。オリジナル画像はフッタ付き画像ファイルの先頭から格納されているので、通常の画像ファイルと同じ処理で画像ファイルを読み出し、読み出した画像データを既知の方法によってサイズ変更してサムネイル画像データを生成すれば良い。尚、生成するサムネイル画像データの形式はRGB24ビットの非圧縮TIFF形式とする。
【００４４】
サムネイル画像データの詳細なデータ形式を図１１に示す。同図に示すように、サムネイル画像データは固定長のTIFFヘッダの後ろに１つのIFDを配置する。このIFDは固定長であり、その中に順に、
・水平方向画素数ImageWidth、
・垂直方向画素数ImageLength、
・ResolutionUnit
で終わるTIFFの仕様に準拠した１２個のタグを宣言する。また、IFDは１つのみであるので、ResolutionUnitの次に、この後にはIFDが存在しなことを表す０を格納する。更にIFDに続いてBitsPerSampleの値として８を格納したWORD型の領域を３つと,  XResolutiont,  YResolutionとしてRATIONAL型の値７２を格納する固定長の2つの領域を設ける。続いて、サムネイル画像のRGBデータを点順次で格納する。RGB画像データは非圧縮であり、そのサイズは  ImageWidthの値×ImageLengthの値×３バイトである。
【００４５】
以上の構造から分かるように、サムネイル画像データ全体の大きさはサムネイル画像の水平方向画素数および垂直方向画素数から容易に求めることができる。次にステップＳ３０６では、フッタブロック全体をディスクからRAM３のワーク上に読み込む。尚、フッタブロックのファイル中の位置はステップＳ３０２において取得済みであり、フッタブロックの正当性はステップＳ３０３およびステップＳ３０４において確認済みであるため、ここでは無条件にフッタブロックの先頭からファイルの末尾までをRAM３上のワークに読み込めば良い。
【００４６】
次に、ステップＳ３０７では、ステップＳ３０５において生成したサムネイル画像データを、フッタ付き画像ファイルのフッタブロックの先頭（即ち、フィールドFiの位置）の位置から、サムネイル画像データのバイト数分だけ上書きする。これにより、ファイル上のフッタブロックの情報が破壊されてしまうが、フッタブロックの情報はステップＳ３０６においてRAM３上のワークに読み込んであるので問題ない。
【００４７】
ステップＳ３０８乃至ステップＳ３１２は、フッタブロックの更新（即ち、サムネイル画像フィールドFt内の種々のフィールドの更新）をRAM３上で行うものである。即ち、サムネイル画像の種類フィールドTtに、ステップＳ３０５において生成したサムネイル画像のデータ形式を表す３文字の拡張子と０を格納する。具体的にはステップＳ３０５において生成したサムネイル画像データ形式がRGB24ビットの非圧縮TIFF形式であるので、"TIF"という３文字と０を格納する。次にステップＳ３０９では、RAM３上で、サムネイル画像の水平方向画素数TWに、ステップＳ３０５において生成したサムネイル画像の水平方向画素数を格納する。次にステップＳ３１０では、RAM３上で、サムネイル画像の垂直方向画素数Thに、ステップＳ３０５において生成したサムネイル画像の垂直方向画素数を格納する。次にステップＳ３１１では、RAM３上のワークに読み込んであるフッタブロックのサムネイル画像フィールドFt内のサムネイル画像ブロックのオフセットTbに、フッタ付き画像ファイルの先頭からサムネイル画像ブロックの先頭までのオフセット値を格納する。具体的には、ステップＳ３０７においてフッタブロックの先頭からサムネイル画像データを上書きしていることから、TbにはRAM３上に読み込んであるフッタブロックのフッタ先頭へのオフセットFeの値と同じ値を格納すれば良い。
【００４８】
次にステップＳ３１２では、RAM３上に読み込んであるフッタブロックのフッタ先頭へのオフセットFeの値にステップＳ３０５において生成したサムネイル画像データのバイト数を加え、それを新たにRAM３上のFeに格納する。サムネイル画像データのバイト数を便宜的にyyyとし、更新前のRAM３上のFeの値をxxxとすると、更新されたFeの値は、
xxx + yyy
である。
かくして、ワークRAM上でフッタブロックの内容が、フッタブロックがサムネイル画像を有するものとして更新された。次にステップＳ３１３では、RAM３上のワークにあるフッタブロックのデータ全体を、フッタ付き画像ファイルのサムネイル画像ブロックの直後の位置から書き込む。
【００４９】
尚、ステップＳ３０７においてサムネイル画像データを書き込んだ後、ディスク中のフッタ付き画像ファイルへの書込みは行っていないので、通常オペレーティングシステムが提供するファイル書込み処理を実行すれば、ステップＳ３１３のおけるフッタブロックの書込みは、Ｓ３０７において書き込んだサムネイル画像データの直後からなされることになる。
【００５０】
次にステップＳ３１４において画像ファイルをクローズして処理を終了する。このクローズ処理は通常のオペレーティングシステムの提供する機能により、SIZEの値は、サムネイル画像が付加された分だけ更新される。
以上の一連の処理によって、図４に示すフッタ付き画像ファイルを図５に示すサムネイル画像ブロックを含んだフッタブロック付きの画像ファイルに変換することができる。尚、変換前と変換後の画像ファイルは同一のファイル名として処理する。
【００５１】
〈サムネイル画像の参照〉
次にフッタ付き画像ファイルのサムネイル画像を参照する処理について図１５を参照して説明する。図１５のフローチャートは、特定のフッタ付き画像ファイルに対して、サムネイル画像の参照を指示することから始まる。
先ず、ステップＳ４０１では、指定されたフッタ付き画像ファイルをオープンする。次にステップＳ４０２では、このフッタ付き画像ファイルの末尾４バイトのFe（フッタ先頭へのオフセット）をRAM３上のワークに取得する。具体的にはＳ４０１で指定されたファイルのファイルサイズSIZEを取得後、ファイルの先頭からのオフセットＳの位置から４バイトを読み込めば良い。
【００５２】
次にステップＳ４０３では取得したFeの値とファイルサイズSIZEを比較し、Fe＜SIZEでない場合はステップＳ４１６に進んでファイルをクローズしエラー終了する。またFe＜SIZEである場合は、ステップＳ４０４に進む。
次にステップＳ４０４では、ファイルの先頭からのオフセット量がFeに等しい位置から４バイトをRAM３上のワークに取得し、その４バイトが“DSIM”という文字列であるか否かを調べ、一致しない場合はステップＳ４１６に進んでファイルをクローズしエラー終了し、一致した場合はステップＳ４０５に進んで処理を継続する。
【００５３】
次にステップＳ４０５では、画像ファイル中のフッタブロック内のサムネイル画像ブロックのオフセット量TbをRAM３上に読み込む。このオフセット量Tbにより、プログラムはサムネイル画像ブロック内の任意の情報を知ることができる。
即ち、ステップＳ４０６では、このサムネイル画像の種類TtをRAM３上に読み込む。ステップＳ４０７では、Ttが"TIF"か否かを調べ、一致していなければステップＳ４１６へ進みファイルをクローズしエラー終了する。また一致した場合は、ステップＳ４０８に処理を進める。
【００５４】
ステップＳ４０８では、画像ファイルの先頭からのオフセット量Tbに基づいて、このサムネイル画像ブロックのTIFFヘダーとIFDお呼びその値（value)をRAM３上のワークに読み込む。即ち、図１１の、サムネイル画像ブロックのTIFFヘッダとIFDの部分およびその値（即ち、BitPerSample、XResolution、YResolutionの値）をRAM３上のワークに読み込む。ここで、サムネイル画像ブロックのTIFFヘッダとIFDおよびその値は固定長なのでそのバイト数分だけ読み込めば良い。
【００５５】
次にステップＳ４０９では、ステップＳ４０８において得られたIFDの中の２つのタグ（ImageWidthとImageLength）からImageWidth×ImageLength×３バイトの計算式にに従って、読み込むべきバイト数を求め、サムネイル画像のRGBデータをRAM３上のワークに読み込む。尚、読み込む際の読込開始位置は、ステップＳ４０８においてオペレーティングシステムが提供するファイル読込処理を実行すれば、自動的にRGBデータの先頭になっている。
【００５６】
次にステップＳ４１０において画像ファイルをクローズして処理を終了する。
図２２に上記処理手順の概略を図示する。
以上の一連の処理によって、図５に示すサムネイル画像ブロックを含んだフッタブロック付きの画像ファイル中のサムネイル画像を参照することができる。
〈撮影日時の参照〉
次にフッタ付き画像ファイルの撮影日時を参照する処理について説明する。
【００５７】
図１６のフローチャートは、特定のフッタ付き画像ファイルに対して、撮影日時の参照を指示することから始まる。
先ず、ステップＳ５０１では、指定されたフッタ付き画像ファイルをオープンする。次にステップＳ５０２では、ファイルの末尾４バイトのフッタ先頭へのオフセットFeをRAM３上のワークに取得する。具体的にはＳ５０１で指定されたファイルのファイルサイズSIZEを取得後、ファイルの先頭からのオフセットＳの位置から４バイトを読み込めば良い。
【００５８】
次にステップＳ５０３では取得したFeの値とファイルサイズSIZEを比較し、Fe＜SIZEでない場合はステップＳ５０７に進んでファイルをクローズしエラー終了する。またFe＜SIZEである場合は、ステップＳ５０４に進む。
次にステップＳ５０４では、ファイルの先頭からのオフセット量がFeである位置からの４バイトをRAM３上のワークに取得し、その４バイトが“DSIM”という文字列であるか否かを調べ、一致しない場合はステップＳ５０７に進んでファイルをクローズしエラー終了し、一致した場合はステップＳ５０５に進んで処理を継続する。
【００５９】
次にステップＳ５０５では、フッタブロック中の画像生成日時フィールドFdをRAM３上のワークに取得する。
次にステップＳ５０６において画像ファイルをクローズして処理を終了する。
以上の一連の処理によって、フッタブロック付きの画像ファイルの撮影日時を参照することができる。
【００６０】
〈コメントの修正〉
次にフッタ付き画像ファイルのコメントを修正する処理について説明する。図１７のフローチャートは、ユーザが若しくはアプリケーションプログラムが、既存のコメントに修正を加えるために、あるいは、初めてのコメントを追加するために、特定のフッタ付き画像ファイルに対して、コメントの修正を指示することと共に、コメントデータなどを渡すことによって起動される。
【００６１】
先ず、ステップＳ６０１では、指定されたフッタ付き画像ファイルをオープンする。次にステップＳ６０２では、ファイルの末尾４バイトのフッタ先頭へのオフセットFeをRAM３上のワークに取得する。具体的にはＳ６０１で指定されたファイルのファイルサイズSIZEを取得後、ファイルの先頭からのオフセットＳの位置から４バイトを読み込めば良い。
【００６２】
次にステップＳ６０３では取得したFeの値とファイルサイズSIZEを比較し、Fe＜SIZEでない場合はステップＳ６１９に進んでファイルをクローズしエラー終了する。またFe＜SIZEである場合は、ステップＳ６０４に進む。
次にステップＳ６０４では、ファイルの先頭からのオフセットがFeの値である位置から４バイトをRAM３上のワークに取得し、その４バイトが“DSIM”というフッタブロックの先頭を表す固有の文字列であるか否かを調べ、一致しない場合はステップＳ６１９に進んでファイルをクローズしエラー終了し、一致した場合はステップＳ６０５に進んで処理を継続する。
【００６３】
次にステップＳ６０５では、フッタブロック全体をRAM３のワーク上に読み込む。これにより、コメントブロック全体がRAM３上に複写される。尚、フッタブロックのファイル中の位置はステップＳ６０２において取得済みであり、フッタブロックの正当性はステップＳ６０３およびステップＳ６０４において確認済みであるため、ここでは無条件にフッタブロックの先頭からファイルの末尾までをRAM３上のワークに読み込めば良い。
【００６４】
次にステップＳ６０６では、フッタ付き画像ファイルの末尾からフッタブロック全体を消去する。
次にステップＳ６０７では、コメントの有無を指定する。この指定は、前述したように、ユーザがあるいはアプリケーションプログラムが指定し、コメントの有無の指定は本ファイル管理モジュールに渡されている。コメントを有りとする場合はステップＳ６０８に処理を進め、コメントなしとする場合はステップＳ６１４に処理を進める。
【００６５】
コメント有りが指定された場合、ステップＳ６０８ではステップＳ６０５においてRAM３上に予め読み込んでおいたフッタブロックのフィールドFcに、図２３に示すように、フッタブロックの先頭（即ちFi）からコメントフィールドの先頭（即ち、Fs）へのオフセット量を表す値を格納する。図７に示すように、フッタブロック内のFi、Fc、Fd、Fw、Fh、Fr、Ftは全て固定長であることから、Fcにセットする値はFi、Fc、Fd、Fw、Fh、Fr、Ftのすべてのバイト数を加えた値である。
【００６６】
次にステップＳ６０９では、ステップＳ６０６においてフッタブロックが消去されていた画像ファイルの末尾に付け加えるようにして、Fi、Fc、Fd、Fw、Fh、Fr、Ftの順に値を書き込む。尚、通常オペレーティングシステムが提供するファイル書込み処理を実行すれば、自動的にファイルの末尾に付け加えるように値が書き込まれる。
【００６７】
次にステップＳ６１０では、コメントとして入力する文字列のバイト数を指定し、それをRAM３上の独立したワークCbに格納する。尚、RAM３上のワークCbのバイト数は、コメントフィールドFsのCbのバイト数に同じである。
次にステップＳ６１１では、コメントとして入力する文字列の文字コードを入力し、それらをRAM３上の独立したワークCｓに格納する。RAM３上のワークCｓのバイト数は、ステップＳ６１０においてCbに格納するバイト数である。
【００６８】
次に、ステップＳ６１２では、ステップＳ６１０およびステップＳ６１１において値を格納したRAM３上のワークCbとCｓを、Cb、Cｓの順で画像ファイルの末尾に付け加えるように書き込む。
次にステップＳ６１３では、RAM３上のワークに読み込んであるフッタブロックのフッタ先頭へのオフセットFeの値に、ステップＳ６１０で指定したコメント文字列のバイト数Cbの値およびCb自体のバイト数を加えた値を格納する。
【００６９】
次にステップＳ６１７では、ステップＳ６１３において値を格納したFeを、画像ファイルの末尾に付け加えるように書き込む。次にステップＳ６１８において画像ファイルをクローズして処理を終了する。
以上の一連の処理によって、フッタブロック付きの画像ファイルにコメントを付加（あるいは修正）することができる。
【００７０】
また、ステップＳ６０７において、コメントなしを指定してステップＳ６１４に処理を進めた場合は、ステップＳ６０５においてRAM３上に予め読み込んでおいたフッタブロックのフッタ先頭へのオフセットFeの値から、コメント文字列のバイト数Cbの値およびCb自体のバイト数を引いた値を、Feに格納する。次にステップＳ６１５では、RAM３上のフッタブロックのコメントフィールドオフセットFcに０を格納する。次にステップＳ６１６では、ステップＳ６０６においてフッタブロックを消去した画像ファイルの末尾に付け加えるようにFi、Fc、Fd、Fw、Fh、Fr、Ftの順に値を書き込む。尚、通常オペレーティングシステムが提供するファイル書込み処理を実行すれば、自動的にファイルの末尾に付け加える用に値が書き込まれる。
【００７１】
次にステップＳ６１７では、ステップＳ６１４において値を格納したFeを、画像ファイルの末尾に付け加えるように書き込む。
次にステップＳ６１８において画像ファイルをクローズして処理を終了する。
以上の一連の処理によって、フッタブロック付きの画像ファイルのコメントを削除することができる。
【００７２】
〈コメントの参照〉
次にフッタ付き画像ファイルのコメントを参照する処理について図１８を参照して説明する。図１８のフローチャートは、特定のフッタ付き画像ファイルに対して、コメントの参照を指示することから始まる。
先ず、ステップＳ７０１では、指定されたフッタ付き画像ファイルをオープンする。次にステップＳ７０２では、ファイルの末尾４バイトのフッタ先頭へのオフセットFeをRAM３上のワークに取得する。具体的にはＳ７０１で指定されたファイルのファイルサイズSIZEを取得後、ファイルの先頭からのオフセットＳの位置から４バイトを読み込めば良い。
【００７３】
次にステップＳ７０３では取得したFeの値とファイルサイズSIZEを比較し、Fe＜SIZEでない場合はステップＳ７１０に進んでファイルをクローズしエラー終了する。またFe＜SIZEである場合は、ステップＳ７０４に進む。次にステップＳ７０４では、オフセットFeの値によりFiから４バイトデータをRAM３上のワークに取得し、その４バイトが“DSIM”という固有の文字列であるか否かを調べ、一致しない場合はステップＳ７１０に進んでファイルをクローズしエラー終了し、一致した場合はステップＳ７０５に進んで処理を継続する。
【００７４】
次にステップＳ７０５では、フッタブロックのコメントフィールドオフセットFcが０か否かを調べ、０である場合はステップＳ７０８へ進んでRAM３上のコメントを取得するためのバッファを０でクリアし、ステップＳ７０９へ処理を進める。また、Fcが０ではなかった場合は、ステップＳ７０６へ処理を進めて、フッタブロックのFcの値を、フッタブロックのコメントフィールドFs位置として取得して、ステップＳ７０７において、コメントフィールドFsのCbおよびCｓを参照して、Cbに格納されているバイト数分だけCｓからRAM３上のバッファに文字コードを転送し、ステップＳ７０９へ処理を進める。次にステップＳ７０９では画像ファイルをクローズして処理を終了する。
【００７５】
以上の一連の処理によって、フッタブロック付きの画像ファイルのコメントを参照することができる。
以上、制御手順が示す一連の処理によって、画像ファイルの末尾にサムネイル画像や日時およびコメントを追加したり、編集、参照することが可能となる。また、これらの追加、、編集、参照は画像ファイルの形式に拘束されない。
【００７６】
【発明の効果】
以上記述したように本発明により、ファイルに対して、例えばサムネイル画像若しくは撮影日時やコメント等の拡張情報を付加するための、ファイルの種類に依存しない統一的な管理方法および装置を提供することができた。
また、本発明によれば、ファイルの種類に依存しないで拡張情報を付加することができるのみならず、既存のオペレーティングシステムのファイル管理と互換性を有するようなファイル管理方法および装置を提供することができた。
【図面の簡単な説明】
【図１】  本発明を適用し得る装置の全体図である。
【図２】  本発明のファイル管理モジュールとオペレーティングシステムとアプリケーションプログラムとの関係を説明する図。
【図３】  本実施形態に係るファイル管理方法の概略を説明する図。
【図４】  フッタ付き画像ファイルの構造を説明する図。
【図５】  サムネイル画像が付加されたときに、サムネイル画像ブロックとフッタブロックとの関係を説明する図。
【図６】  フッタブロックの構造を説明する図。
【図７】  サムネイル画像とコメントフィールドが付加されたときのフッタブロックの構造を説明する図。
【図８】  画像作成日時に関する情報を記憶するフィールドの構造を説明する図。
【図９】  サムネイル画像を記憶するフィールドの構造を説明する図。
【図１０】  コメントフィールドの構造を説明する図。
【図１１】  TIFFヘダーの構造を説明する図。
【図１２】  本実施形態において、単純な画像ファイルをフッタブロック付き画像ファイルに変換する制御手順を表すフローチャート。
【図１３】  図１２のフローチャート中のフッタブロックを初期的に生成するステップの詳細を説明するフローチャート。
【図１４】  サムネイル画像ブロックを付加する制御手順のフローチャート。
【図１５】  サムネイル画像ブロックを参照する制御手順のフローチャート。
【図１６】  撮影日時フィールドを参照する制御手順のフローチャート。
【図１７】  コメントフィールドを修正若しくは新規生成する制御手順のフローチャート。
【図１８】  コメントフィールドを参照する制御手順のフローチャート。
【図１９】  図１２の処理の概略を説明する図。
【図２０】  フッタブロック付加処理の概略を説明する図。
【図２１】  サムネイル画像ブロックの付加処理の概略を説明する図。
【図２２】  撮影日時の参照処理の概略を説明する図。
【図２３】  コメント修正処理の概略を説明する図。
【図１】
0004250238.tif 000002
【図２】
0004250238.tif 000003
【図３】
0004250238.tif 000004
【図４】
0004250238.tif 000005
【図５】
0004250238.tif 000006
【図６】
0004250238.tif 000007
【図７】
0004250238.tif 000008
【図８】
0004250238.tif 000009
【図９】
0004250238.tif 000010
【図１０】
0004250238.tif 000011
【図１１】
0004250238.tif 000012
【図１２】
0004250238.tif 000013
【図１３】
0004250238.tif 000014
【図１４】
0004250238.tif 000015
【図１５】
0004250238.tif 000016
【図１６】
0004250238.tif 000017
【図１７】
0004250238.tif 000018
【図１８】
0004250238.tif 000019
【図１９】
0004250238.tif 000020
【図２０】
0004250238.tif 000021
【図２１】
0004250238.tif 000022
【図２２】
0004250238.tif 000023
【図２３】
0004250238.tif 000024