撮影日時
旅行へ行っている間、撮影日時が実は1年ずれて2005年で撮影され続けていた。いまさら、どうしようもないないない。で、「撮影日時 一括変更」あたりでぐぐってみるもいいソフト全くなし。ないものはしょうがないので手作業で直すしかない。といっても手作業でバイナリエディタ開いて修正するのも5枚ほどで断念。手作業での修正はstirlingを使って2005のところを2006へ書き換え。こんなの200枚近くやっていたら日が暮れてしまう。てか今は夜中だから日があけてしまう。。。なんで、手作業でやっていたことをC#のコードでさくさくっと書いて、実行させてみた。コーディング15分ほど、実行は1秒もかかりませんでした。めでたしめでたし。Exifの中には撮影日時に相当するものを書くところが3箇所あります。これらを全て書き換えるというのが、以下のコード。バイト位置は私の持っているデジカメ専用なので、stirlingとか使ってバイト位置は確かめる必要があります。以下はそのお手軽書き換えコード private void button1_Click(object sender, EventArgs e) { byte [] bt=new byte[0x300]; string[] strs = System.IO.Directory.GetFiles(@"E:\DCIM\100RICOH.bak", "*.jpg", System.IO.SearchOption.TopDirectoryOnly); foreach (string str in strs) { using (BinaryReader br = new BinaryReader(File.OpenRead(str))) { br.Read(bt, 0, 0x300); if (bt[0x119] == 0x35)//2005年なら { bt[0x119] = 0x36;//2006年に bt[0x29d] = 0x36;//2006年に bt[0x2b1] = 0x36;//2006年に } } using (BinaryWriter bw = new BinaryWriter(File.OpenWrite(str))) { bw.Write(bt); } } }