フリーでコマンドラインベースで動く、画像ファイルのExif情報を取得したり、書き換えることのできるツール、ExifTool。これを使ったExifデータの書き換えの方法を個人的な備忘録としてメモしておきます。
Exiftoolで取得できる情報は以下のようなものがあります*1。
--------------------------------
-ExifTool:ExifToolVersion=12.04
-ExifTool:Warning=FileName encoding not specified
-System:FileSize=278 MB
-System:FileModifyDate=2020:11:22 20:48:45+09:00
-System:FileAccessDate=2020:11:22 20:48:45+09:00
-System:FileCreateDate=2020:11:20 09:34:20+09:00
-System:FilePermissions=rw-rw-rw-
-File:FileType=TIFF
-File:FileTypeExtension=tif
-File:MIMEType=image/tiff
-File:ExifByteOrder=Little-endian (Intel, II)
-IFD0:SubfileType=Full-resolution image
-IFD0:ImageWidth=7792
-IFD0:ImageHeight=5040
-IFD0:BitsPerSample=16 16 16
-IFD0:Compression=LZW
-IFD0:PhotometricInterpretation=RGB
-IFD0:FillOrder=Normal
-IFD0:ImageDescription= [画像コメント情報]
-IFD0:Make=Minolta [デバイスメーカー名]
-IFD0:Model=Scan Elite 5400 [デバイス機種名]
-IFD0:StripOffsets=(Binary data 48519 bytes, use -b option to extract)
-IFD0:Orientation=Horizontal (normal)
-IFD0:SamplesPerPixel=3
-IFD0:RowsPerStrip=1
-IFD0:StripByteCounts=(Binary data 30239 bytes, use -b option to extract)
-IFD0:MinSampleValue=0 0 0
-IFD0:MaxSampleValue=65535 65535 65535
-IFD0:XResolution=5400 [解像度 dpi]
-IFD0:YResolution=5400 [解像度 dpi]
-IFD0:PlanarConfiguration=Chunky
-IFD0:PageName=Transparency
-IFD0:ResolutionUnit=inches
-IFD0:Software=VueScan 9 x64 (9.7.37) [画像作成ソフト]
-IFD0:Predictor=Horizontal differencing
-IFD0:Copyright= [著作権者情報]
-ExifIFD:DateTimeOriginal=YYYY:MM:DD HH:MM:SS [撮影日]
-ExifIFD:CreateDate=YYYY:MM:DD HH:MM:SS [ファイル作成日]
-ICC-header:ProfileCMMType=Adobe Systems Inc.
-ICC-header:ProfileVersion=2.1.0
-ICC-header:ProfileClass=Display Device Profile
-ICC-header:ColorSpaceData=RGB
-ICC-header:ProfileConnectionSpace=XYZ
-ICC-header:ProfileDateTime=1999:06:29 17:07:58
-ICC-header:ProfileFileSignature=acsp
-ICC-header:PrimaryPlatform=Apple Computer Inc.
-ICC-header:CMMFlags=Not Embedded, Independent
-ICC-header:DeviceManufacturer=none
-ICC-header:DeviceModel=
-ICC-header:DeviceAttributes=Reflective, Glossy, Positive, Color
-ICC-header:RenderingIntent=Perceptual
-ICC-header:ConnectionSpaceIlluminant=0.9642 1 0.82491
-ICC-header:ProfileCreator=Adobe Systems Inc.
-ICC-header:ProfileID=0
-ICC_Profile:ProfileCopyright=(c) 1999 Adobe Systems Inc.
-ICC_Profile:ProfileDescription=Adobe RGB (1998)
-ICC_Profile:MediaWhitePoint=0.95045 1 1.08905
-ICC_Profile:MediaBlackPoint=0 0 0
-ICC_Profile:RedTRC=(Binary data 14 bytes, use -b option to extract)
-ICC_Profile:GreenTRC=(Binary data 14 bytes, use -b option to extract)
-ICC_Profile:BlueTRC=(Binary data 14 bytes, use -b option to extract)
-ICC_Profile:RedMatrixColumn=0.60974 0.31111 0.01947
-ICC_Profile:GreenMatrixColumn=0.20528 0.62567 0.06087
-ICC_Profile:BlueMatrixColumn=0.14919 0.06322 0.74457
-Composite:ImageSize=7792x5040
-Composite:Megapixels=39.3
--------------------------------
この情報の中から、自分が書き換えたい情報を選り抜き、テキストファイルを作ります。例えば、上のファイルではデバイス名がフィルムを取り込んだスキャナ名となっていますが、それを撮影したカメラのモデル名に変え、さらに画像に対するコメントと、撮影日を変えたい、とします。その場合は、上の内容から書き換えたい行を選り抜き、例えば以下のように書き換えます。その内容を仮に Change.txt というような名前で保存するとします。なお、このファイルは文字コードをUTF-8で保存してください。
---------------------------------------------
-IFD0:Make=Nikon
-IFD0:Model=FM2
-IFD0:ImageDescription=北海道で撮った写真
-ExifIFD:DateTimeOriginal=2000:01:05 12:00:00
---------------------------------------------
また、ExiftoolはIPTCやxmpのタグも追加できます。例えば画像の説明として上記に加え、以下のような記述を追加しておくと良いでしょう。
-------------------------------
-IPTC:Caption-Abstract=北海道で撮った写真 2000.1.5
-xmp:Caption=北海道で撮った写真 2000.1.5
--------------------------------
仮に、Exiftoolと書き換えたい画像ファイル、および書き換えたい内容を書いた Change.txt がいずれもカレントディレクトリにあると仮定すると、次のコマンドをコマンドラインから実行することによりExif情報が書き換わります。Change.txtに指定のない内容は書き換わりません。
exiftool -@ Change.txt Exif情報を書換えたい画像ファイル名
カレントディレクトリにある、すべての特定の形式のファイルに同じ内容で書き換えたい場合は次のような内容のバッチファイルを作って実行します。
for %%f in (*.dng) do exiftool -@ -codedcharacterset=utf8 -charset iptc=latin2 Change.txt %%f
カレントディレクトリのすべてのdngファイルにChange.txtの内容を適用
for %%f in (*.tif) do exiftool -@ -codedcharacterset=utf8 -charset iptc=latin2 Change.txt %%f
カレントディレクトリのすべてのtifファイルにChange.txtの内容を適用
-codedcharacterset=utf8 -charset iptc=latin2は、コメントを日本語で記述する際に必要です。日本語で文字化けさせないためにはUTF-8を使う必要があります。 iptc=latin2 はExifデータのみ書き込む場合は必要ないと思います。
上のコマンドを直接コマンドラインから実行する場合は % を一つにし、二つつなげないでください。
Exiftoolはかなりいろんなコマンドがありますが、とりあえずデータ書き換えに限ればこの方法が一番シンプルで最も柔軟性が高いと思います。
以上の情報は、下記のサイトを参考にさせていただきました。
これ以外に、国産のExifデータを書き換えるフリーソフトもありますが (F6 Exif, Exif Changerなど)、適用できるファイル形式がJpegなど限られてしまうのが欠点です。