写真の撮影日時を秒まで取得する

以前にファイルのプロパティ取得関連について、GetDetailsOfでファイルプロパティを取得するの記事で書いたんですが、日時の属性は年月日・時間・分までは取得できますが、秒は取得できません。

例えば、撮影日時をGetDetailsOfで取得するとき、引数は「12」を与えれば取得できますが、あくまで分までです。以下はGetDetailsOfを使って撮影日時を分まで取得するサンプルです。

この出力結果は、以下のようになります。

ファイル名: test (1).JPG
撮影日時:‎2019/‎10/‎06 ‏‎10:53
ファイル名: test (2).JPG
撮影日時:‎2019/‎10/‎22 ‏‎14:19
ファイル名: test (3).JPG
撮影日時:‎2019/‎10/‎06 ‏‎10:55

出力結果の通り、撮影日時は「2019/‎10/‎06 ‏‎10:55」と分までです。作成日時や更新日時はSystem.IO.FileInfoを使って、

System.IO.FileInfo f = new System.IO.FileInfo(filePath);
Console.WriteLine(“作成日時:” + f.CreationTime.ToString());
Console.WriteLine(“更新日時:” + f.LastWriteTime.ToString());

とすれば秒まで取得できるのですが、撮影日時はFileInfoでは取得できません。ということで、撮影日時はImageから読みとって取得します。

撮影日時を秒まで取得するサンプルが以下です。※参照設定に「System.Drawing」を追加して、先頭にusingに以下2行も追加します。

using System.Drawing;
using System.Drawing.Imaging;

GetPicDateTimeでGetPicDateTimeFromImageのメソッドを呼び出しています。出力結果は以下です。秒まで取得できています。

ファイル名: test (1).JPG
撮影日時:2019/10/06 10:53:08
ファイル名: test (2).JPG
撮影日時:2019/10/22 14:19:07
ファイル名: test (3).JPG
撮影日時:2019/10/06 10:55:14

 

当然ですが、そもそもファイルにExif情報が含まれていない場合は、撮影日時は取得できませんので空文字を返します。

コメント

タイトルとURLをコピーしました