カメラで撮影した写真から
・Exif情報を取得
できます!
※ここでいう「写真」は「画像ファイル」です。
Exif情報とは
・カメラの製造元とモデル
・撮影日時
・経度と緯度
等の情報です!
※経度と緯度を活用すれば、撮影場所を特定できます。
各SNSへアップされた画像に
Exif情報はありません。
※各SNSのyり自動で削除されてます。
※個人情報漏洩の防止のためです。
VBAコード
ここでは例として、
・デスクトップ配下の画像ファイル「IMG_0264-225×300.jpeg」から
・Exif情報を取得して
・イミディエイトウィンドウへ出力
します。
※Exif情報として
・カメラの製造元とモデル
・撮影日時
・経度と緯度
を取得します。
'変数の宣言を必須
Option Explicit
Sub sample()
Dim photFile As String
Dim objWia As Object
Dim p As Object
Dim makerName As String
Dim ModelName As String
Dim dateOfShooting As String
Dim latitude As String
Dim longitude As String
'対象の写真(画像ファイル)を指定
photFile = "C:\Users\user\Desktop\IMG_0264-225x300.jpeg"
Set objWia = CreateObject("Wia.ImageFile")
'写真(画像ファイル)をロード
objWia.LoadFile photFile
For Each p In objWia.Properties
Select Case p.Name
'カメラの製造元
Case "EquipMake"
makerName = p.Value
'カメラのモデル
Case "EquipModel"
ModelName = p.Value
'撮影日時
Case "ExifDTOrig"
dateOfShooting = p.Value
'緯度
Case "GpsLatitude"
latitude = p.Value(1) + p.Value(2) / 60 + p.Value(3) / 3600
'経度
Case "GpsLongitude"
longitude = p.Value(1) + p.Value(2) / 60 + p.Value(3) / 3600
End Select
Next
'イミディエイトウィンドウへ出力
Debug.Print "カメラの製造元:" & makerName
Debug.Print "カメラのモデル:" & ModelName
Debug.Print "撮影日時 :" & dateOfShooting
Debug.Print "緯度 :" & latitude
Debug.Print "経度 :" & longitude
'後片付け
Set objWia = Nothing
End Sub
実行結果
カメラで撮影した写真(画像ファイル)から、Exif情報を取得できました。
参考①
以下の拡張子の写真(画像ファイル)から、Exif情報を取得できたことを確認しています。
・jpg
・jpeg
・png
参考②
経度と緯度を活用することで、撮影場所を特定できます。
※特定方法の詳細は割愛します。
参考③
上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。
※英語版の公式サイトしか無い様子です。
●「ImageFileオブジェクト」の「LoadFile」メソッド
●「ImageFileオブジェクト」の「Properties」プロパティ
●「Propertiesオブジェクト(=コレクション)」
●イミディエイトウィンドウへ出力