まとめ
exiftoolを使って、IPTC情報ほかを記述したcsvファイルを読み込むことで画像ファイルのメタデータを設定できる。
同一項目に複数の内容を設定する場合は、以下の条件で設定できた。
- 設定したい項目をダブルクオートで囲い
"tag1<CR+LF>tag1<CR+LF>tag2"
のように一件ごとにCR+LFで区切って記述する- Excelのセル内改行を行った状態でCSV形式で出力すると、この区切りがLFとなるため期待された動作とはならない。RFC4180(Common Format and MIME Type for Comma-Separated Values (CSV) Files)に従い、レコードの区切りとなる改行コードと複数データの区切り文字のコードのいずれもCR+LFにそろえる、あるいはLFにそろえることで正しく区切り文字として認識される。
記述例:改行はすべてCR+LF
SourceFile,IPTC:Keywords
0361.JPG,"竹富島
桟橋
青い空"
準備
目的
- 複数の画像ファイルをflickrに掲載したい
- タグ、タイトルなどメタデータを一点一点入力するのは面倒なのであらかじめexcelなどで作成したものをインポートしたい
対象のデータ
- 画像ファイルが1万枚以上ある
- 画像のメタデータはexcelであらかじめ作成済み
実行環境
- Windows7のコマンドプロンプト
-
exiftoolのWindows用バイナリ
- 解凍後、実行ファイルの名前を exiftool(-1).exe から exiftool.exeに変更
- パスが通っている場所に exiftool.exeを移動
手順
csvファイルの準備
- 改行コード(レコードの区切り)は CR+LF に設定
- exiftoolを実行してファイル名など基本的なメタデータを取り出す。
- ここでの出力ファイル名は metadata.csv
- 画像ファイルは同じディレクトリに3件ある
- -g オプションでタグ付きのメタデータで出力される。
- 参考:コマンドラインオプション > http://www.sno.phy.queensu.ca/~phil/exiftool/exiftool_pod.html#Input-output-text-formatting
C:\Users\tzhaya\Pictures\test>exiftool -g -csv . > metadata.csv
1 directories scanned
3 image files read
C:\Users\tzhaya\Pictures\test>
- metadata.csvの先頭行にファイル名、あとは元のファイルに記録されていたEXIF情報が出力される。
- 各タグ名と内容の詳細はExifTool Tag Nameを参照されたい。
csvファイルの編集
- ここでは、flickrに必要なIPTCタグの情報のみを編集する。IPTCタグとflickrのフィールドの対照はsetting flickr metadata using IPTC informationによる。今回は以下を設定した。
IPTC Field | Flickr Field |
---|---|
Caption-Abstract | Description |
Headline | Title |
Keywords | Tags |
※Descriptionに相当するタグはCaptionではなくCaption-Abstractの模様。
- excelでの入力時には、IPTCのフィールドには先頭に IPTC: と付与する。また、CSVでの保存後に以下の処理が必要。
- タグを複数使用する場合は、セル内で改行しておく。
- テキストエディタでタグの区切りで使用している文字コード LF を CR+LF に変換する
- 文字コードをUTF-8に変換する
exiftoolでの反映
- 入力したcsvファイルの内容をexiftoolで画像ファイルに反映させる
- -csv=metadata.csv でインポートするファイル名の指定
- -codedcharacterset=utf8 -charset iptc=latin2 で内部の文字コードをUTF-8に変換するよう指定。これがないと日本語が表示されない
C:\Users\tzhaya\Pictures\test>exiftool -csv=metadata.csv -codedcharacterset=utf8 -charset iptc=latin2 .
1 directories scanned
3 image files updated
C:\Users\tzhaya\Pictures\test>
- flickrにドラッグアンドドロップでインポート
# 問題点
* うまくインポートできているように見えたが、複数のKeywordsをカンマ等で区切っても1ワードとしてみられてしまうようだ。
* IPTC:KeywordsとXMP:Subjectに1ワードずつ入力すると、flickr側で合計2語のtagとして扱ってくれるが、3語以上はどうすればいいのか。未解決。
追記
その後、twitterで以下のコメントを頂いたので試してみた。
@tzhaya こんばんは。
— おかもと (@Araiyayon) 2017年4月20日
Windowsのエクスプローラで、画像のプロパティ→詳細でタグの項目を手で入力すると、複数の項目は ;(セミコロン)で区切られます。これをflickerにアップロードすると複数のTagが入るので、; で区切るようにしたらいかがでしょう。
Windowsのエクスプローラの画像プロパティで各タグを手入力
この状態でflickrにインポートすると、タグは3つ設定される。
csvにエクスポート
C:\Users\tzhaya\Pictures\test>exiftool -g -csv 0361.JPG > 0361.csv
メタデータ項目と内容の対照
tag | |
---|---|
SourceFile | 0361.JPG |
EXIF:ImageDescription | 竹富島の桟橋 |
EXIF:Artist | tzhaya |
EXIF:DateTimeOriginal | 1999:04:20 20:37:16 |
EXIF:CreateDate | 1999:04:20 20:37:16 |
EXIF:XPTitle | 竹富島の桟橋 |
EXIF:XPAuthor | tzhaya |
EXIF:XPKeywords | 竹富島;桟橋;青空 |
IPTC:Keywords | 竹富島, 桟橋, 青空 |
XMP:Subject | 竹富島, 桟橋, 青空 |
XMP:Title | 竹富島の桟橋 |
XMP:Description | 竹富島の桟橋 |
XMP:Creator | tzhaya |
XMP:LastKeywordXMP | 竹富島, 桟橋, 青空 |
XMP:DateAcquired | 2010:04:20 20:37:39.276 |
Composite:SubSecCreateDate | 1999:04:20 20:37:16.17 |
Composite:SubSecDateTimeOriginal | 1999:04:20 20:37:16.17 |
タグはEXIF:XPKeywords,IPTC:Keywords,XMP:Subject,XMP:LastKeywordXMPの3カ所に入力されていることがわかる。
CSVからのflickrへのインポート
まずメタデータを全て削除する。
C:\Users\tzhaya\Pictures\test>exiftool -all= 0361.jpg
1 image files updated
ここで
EXIF:XPKeywords
IPTC:Keywords
XMP:Subject
の3つの形式それぞれでインポートを試してみた。結果は以下の通り。
tag | csvファイルの記述 | flickrでのインポート内容 |
---|---|---|
EXIF:XPKeywords | 竹富島;桟橋;青空 | インポートされず |
IPTC:Keywords | 竹富島;桟橋;青空 | 竹富島;桟橋;青空が一つのタグになる |
XMP:Subject | "竹富島, 桟橋, 青空" | 竹富島,桟橋,青空が一つのタグになる |
なお、先に出力した 0361.csv をもう一度 0361.jpg に書き込んでも、区切り記号は反映されずまとめて一つのタグと見なされてしまった。ううむ。
jsonでインポートしてみた
ではjsonで書いてみた。
[{
"Title": "竹富島の桟橋",
"Subject": ["竹富島","桟橋","青空"],
}]
そしてファイルに書き込んでflickrにインポート。今度はタグが3つ付いた。
C:\Users\tzhaya\Pictures\test>exiftool -json=test.json 0361_json.jpg
1 image files updated
追記2
さらに おかもと (@Araiyayon)さんからコメントを頂いたので、追試してみた。
@tzhaya そちらと同じようなcsvで試したら、うまくアップロードできました。何が違うのかな?
— おかもと (@Araiyayon) 2017年4月22日
flickr https://t.co/NOsP0cL0V4
original https://t.co/cgmDxEUIqN
(originalの画像をエディタで開くと、LFの改行がみえます)
CSVファイル自体のレコードの区切るとなるコードの問題と考え、CR+LF から LF に変更してexiftoolで読み込ませて動作を確認した。
なお、RFC4180(Common Format and MIME Type for Comma-Separated Values (CSV) Files)に従い、レコードの区切り文字、データの区切り文字のコードをいずれもCR+LFで試したが動作した。
- レコードの区切りの文字コードは CR+LF
- 設定したい項目をダブルクオートで囲い
"tag1<LF>tag1<LF>tag2"
のように一件ごとにCR+LFで区切って記述する
CSVファイルの記述
SourceFile,IPTC:Keywords
0361.JPG,"竹富島
桟橋
青い空"
C:\Users\tzhaya\Pictures\test>exiftool -csv=0361_iptc_col_lf.csv -codedcharacterset=utf8 -charset iptc=latin2 0361_iptc.jpg
1 image files updated
Windowsでの画像のプロパティは以下のように見える。
これをflickrにドラッグアンドドロップでインポートしたところ、正しくtagが3つ設定された。