2023年2月23日木曜日

写真 日付変更 exiftool 其の弐

もし、撮った写真の時刻がずれていたら!、
の 第二回 です。
お約束の通り、exiftool で 日付変更 した訳ですが、
ファイル構造に変化はあるのか? の答えを。


exiftool で 日付変更 の 方法については、
前回 写真 日付変更 exiftool 其の壱 を参照下さい。

期待していたのは、
日付部分のみの更新な訳ですが、
実際には、そうだとも、そうで無いとも、言えます。

バイナリ的に、
該当部分のみ書き換えられていれば、
個人的には 言う事無し! なのですが、
ファイルサイズが異なっている事から、
その部分だけ直しているのでは無い事が分かります。

今回の例では、
元サイズ 10.3 MB (10,841,872 バイト)、
後サイズ 10.2 MB (10,793,257 バイト)、
と、若干ですが、差異が認められます。

で、早速、昔作った プログラム で、
ファイル構造を覗いて見ました。


元画像

後画像


此れから分かるのは、
ファイル構造自体は類似している事と、
Exif 及び XMP 格納部分を圧縮している事です。

前で書いた プログラム機能追加中断 の時には、
ファイル構造自体から大きく異なっていて、
.jpg 格納アルゴリズムの違い を予見出来たのでした。

今回は、流石に、違いますね。

さて、圧縮(サイズ低下)されている件に戻りましょう。

以前の経験から、
双方の格納部分後半は 空白等 で埋められているので、
圧縮が イコール データ欠落 とは言えません。

実際に、
EXIF 項目数や値に変化はありませんでした。

肝心な 主データ 部分を見て見ましょう。
ファイル後半に収められた Image Streams の長さです。

Image Streams Size
Top Offset - End Of Image Marker Offset
Original
10,841,870-83,533 = 10,758,337
exiftool
10,793,255-34918 = 10,758,337
格納されたイメージのサイズは同じ。

Quatization Table / Frame Header / Huffman Table / Scan Header
の各サイズも同じ。

繰り返しになりますが、
Exif や XMP のサイズが小さくなっている件は、
カメラがサイズを決め打ちして(予め領域を固定確保し?)書いている後半空白部分 (0x00 や 0x20 等) を、
切り詰めている と思われます。
従って、内容的には同じ気もします。

しかし、書き込み位置がズレる為、
双方を cmd.exe の FC (File Compare) Command で比較すると、
ズラ~、と違いが列挙され、おろおろ の状況に ... 。
最初、焦りましたって ... 。

流石に、サイズ以外の内容を比較する知識は無いので、
深追いは止めますが、
きっと、
各ライブラリのロジックの違いから、
Offset が違っているだけで、
内容的には同じと考えて良いのだろうと思います。



願わくは、
間違い設定が無かった事にして、
最初から正確な日付で撮影格納されたファイルの姿に戻したい訳ですが、
そうするには、やはり、
自分でバイナリを操作するプログラムを書く必要がありそうですね。

内容的には同じでも、
少し勝手が異なるファイルで満足するか否か、 でしょうか?。



最後に、ひとつ。
exiftool って、凄いですね!。
MakerNote 迄もサポートする辺り、素晴らしい出来栄えです。
感心、感心、です。  ;)



0 件のコメント:

コメントを投稿