osakana.factory "もじうめのやや詳しい説明書" (C) 2006 Mishiki Sakana  どういう動作をしているのか知ってもらえるると、パワーユーザの方もやや安心し て使っていただけるのではと思います。 ●ファイルの判別法 ドラッグ & ドロップなどで選択されたファイルが PNG や JPG かどうかの判別は、 拡張子ではなくファイル本体をチェックして行います。逆にいうと、.bak などに拡 張子を変更していても PNG や JPG だと判別しますので注意してください。また、 マックバイナリなどが付与されたりすると読めなくなります。 ・PNG の判別  PNG ヘッダで判別しています。PNG ファイルの先頭には、必ず 0x89504E470D0A1A0A が記述されています。 ・JPG の判別  以下の手順でチェックしています。  1、ファイルの先頭2バイトが SOI + APP0(0xFFD8FFE0)であること  2、6バイト目から JFIF が埋まってること  3、ファイル終端2バイトが EOI マーカ(0xFFD9)であること JPG は PNG よりやや緩いフォーマットなのでちょこっとだけ丁寧です。 ・GIF の判別  GIF ヘッダで判別しています。GIF87 か GIF89 であることの確認しか行ってません。 ●コメントを埋め込む仕組み  ・PNGの場合  まず COMMENT.INI を読み込み、タイトルや作成日を取得してから文字の長さを調 べ、CRC を計算してバイナリ( textchnk.bin というファイル名で一時的に書き出し てます)に変換します。その後、このバイナリを、PNG の先頭から 33 バイト目に埋 め込みます。仕様上、tEXt チャンクはファイルの何処に置いても良いことになって いますが、本ソフトではこの位置は固定されています。  ・JPGの場合  COMMENT.INI を読み込み、タイトルや作成日を展開してプレーンテキストにしてか ら 20バイト目に埋め込みます。これもこのソフトでは固定です。TXTCOMMENT.INI ファイルが存在する場合は、COMMENT.INI よりそちらを優先します。ただし、 TXTCOMMENT.INI ではタイトルや日付の展開などを一切しませんので悪しからず。  ・GIFの場合  COMMENT.INI を読み込み、タイトルや作成日を展開してプレーンテキストにしてか ら、カラーパレットの後に埋め込みます。コメントが255バイトより長くなった場合は、 複数に分割して埋め込みます。JPGの場合同様、TXTCOMMENT.INI が存在する場合は、 そちらを優先します。 ●コメントを削除する仕組み  ・PNGの場合  PNG ファイルの頭から tEXt チャンクをずーっと探し、該当した部分があればその 部分を切り取ります。その他の部分には手を触れません。  ・JPGの場合  コメントマーカ(0xFFFE)をスキャンし、該当した部分があれば切り取ります。複 数産め込まれていた場合は全部削除します。  ・GIFの場合  コメントブロック(0x21から0x00まで)をスキャンし、該当した部分を切り取りま す。複数埋め込まれていた場合は全部削除します。  ・PhotoShopバイナリを削除する仕組み  PhotoShop が作る JPG には、他のソフトで利用されることの無い独自のデータが くっついてます。これは、PhotoShop 以外にはゴミです。ファイルが 10 Kbくらい軽 くなりますので、PhotoShop で JPG を作ってる人は、この機能を使うことをお勧め します。SOI APP0 以外の、拡張 APP0 も含めた全ての APPn フィールドを削除しま す。 ●バックアップファイルについて  オリジナルのファイルを *.png.bak 、 *.jpg.bak 、*.gif.bak というファイル名 でバックアップしています。ただし、バックアップは1代限りです。もし、バックア ップファイルが既に存在する状態で本ソフトを使用すると、バックアップは新しいも のに置きかえられてしまいますので、ご注意下さい。 ●ログについて  “編集(E)”メニューから“処理のログを保存する(L)”を選ぶと、Log Message に 表示される処理の記録が、"mojiume.log" に保存されます。デフォルトはログを保存 しません。ログファイルはどんどん大きくなっていくので、適宜消してください。ま た、ログを保存すると処理速度がやや遅くなります。 ●埋め込める最大文字数について  PNGの規格で、キーワードの長さは79文字までと決まっています。説明文の長さに 規格上の制限は特にありませんが、このソフトの仕様上 255 文字までです。また、 付属のコメント編集機能ではフリーキーワードが6つしかありませんが、エディタで 直接編集すれば幾つでも自由に設定出来ます。  JPG や GIF の場合は特に仕様上の制限は無いようですが、このソフトでは PNG の 制限に倣います。ただし、TXTCOMMENT.INI を使用される場合は特に制限はありませ ん。メモリの許す限り埋め込みます。 ●使える文字種について  PNG の規格上、アルファベット(iso-8859-1)だけということになってます。 本ソフトでは普通に日本語も埋め込めますが、海外のビューワなどで何が起こる かは知りません。なお、規格上は途中で改行を使っても構わないのですが、この ソフトの仕様上使えません。tab は、エディタ等で直接書き込めば使用可能です。  TXTCOMMENT.INI には日本語(Shift_JIS)を入れても大丈夫です。 ●Title と Creation Time の自動挿入について  自動挿入をオンにしてると、Title にはファイル名から拡張子を取り除いたもの、 Creation Time には、ファイルの最終更新日時(作成日時ではありません)が入りま す。Creation Time のフォーマットは、RFC 1123 に則って、 Fri, 07 Sep 2001 02:42:52 +0900 などとなります。RFC1123は、mail や http(の内部)で使われるインターネット標 準の日付表記法です。PNG の規格ではこの書き方が推奨されています。 ●ファイルの最終更新日時について  このソフトは既存のファイルを上書きしますが、ファイルの最終更新日時や作成日 を一切変更しません(正確には、元の時間に書き戻します)。何故こういう仕様なの かというと、私がそういうのを求めてたからです。イヤな人は touch などでバッチ 処理してください。