以前、「ソニーのデジカメ写真のEXIFから、クリエイティブスタイル、ピクチャーエフェクト情報を抜き出して、画像ファイル名にEXIF情報を付け足す。」という記事を書いた。
これは、「DSC-RX100M6」の「クリエイティブスタイル」や「ピクチャーエフェクト」を想定したものだった。
今回、先日購入した「ZV-1 II」の「クリエイティブルック」対応のスクリプトを作成。
(参考)ZV-1 II:クリエイティブルック
※ EXIF上は、「クリエイティブルック」も「Creative Style」。
今回は、「クリエイティブルック」対応の「Creative Style」だけを抜き出して、ファイル名に付加するシンプルなツールにした。
※ ExifToolおよび以下のツールの使用については、自己責任でお願いいたします。また、事前に画像ファイルのバックアップを取った上で利用願います。
【概略】
- ExifTool → [data.txt] → スクリプト(exif2clook.jse) → [out.txt]
※ [data.txt]を介さずに、[out.txt]を作成する方法を最後に記載。 - [out.txt]に書かれているrenameコマンドを使って、ファイル名に「クリエイティブルック名」を付加。
【使い方の手順】
以下のサイトから、「Windows Executable」をダウンロードして、解凍する。
解凍するとexiftool(-k).exeというファイルが現れる。コマンドプロンプトで使う場合は、これをexiftool.exeにリネームして使う。
※ exiftoolは、最初1回目の実行では結果表示まで10秒近く時間がかかるので辛抱強く待つ。
コマンドプロンプトでjpegファイルを指定して実行すると、EXIF情報の一覧が表示される。
exiftool.exe xxx.jpg
exiftoolに適当なオプションを指定すると、必要な情報のみを簡潔に得ることができる。
例えば、以下のようなオプションを指定すると
exiftool.exe -creativestyle -makernotes:contrast -makernotes:saturation -makernotes:sharpness -makernotes:pictureeffect xxx.jpg
次のような結果が得られる。
Creative Style : Standard Contrast : -2 Saturation : 0 Sharpness : +3 Picture Effect : Off
今回は、シンプルに「クリエイティブルック」の「Creative Style」のみを抽出する。
exiftool.exe -creativestyle
次のような結果が得られる。
Creative Style : Standard
今回、この結果を使って、画像ファイル名に「Creative Style」情報を付け足して、ファイル名だけ見れば、撮影時の「クリエイティブルック」が分かるスクリプト(JScript)を作成。
※ このスクリプトは、exiftoolを上記オプションで実行した結果にのみ対応しているので、汎用的には利用できない。
スクリプト(JScript)は、この記事の一番下に載せている。これをテキストファイルにコピー&ペーストして、拡張子「jse」のファイルにする。ファイル名は任意だが、とりあえずexif2clook.jseとする。これを、任意のフォルダに入れて置く。そのフォルダに「data.txt」というファイルも作っておく。
【exiftool実行手順】
exiftool(-k).exeをexiftool.exeにリネームして、C:\Windowsに入れる(入れる場所は任意)。入れたexiftool.exeのショートカットを作成してデスクトップに置く。
ショートカットのプロパティを開いて、リンク先を次のように設定する。
C:\Windows\exiftool.exe -k -creativestyle
このショートカットアイコンに、画像ファイルを複数まとめてドラッグ&ドロップすると、コマンドプロンプトに似たウインドウが開いて、まとめて結果が表示される。
※ 一度にウインドウに表示できる行数に制限がある模様。1度にドラッグ&ドロップする画像ファイルは40個以内にした方が良い。
このウインドウに表示された結果テキストをCtrl-A、Ctrl-Cでコピーし、exif2clook.jseと同じフォルダにあるdata.txtを開いてペーストし保存する。
※ コマンドプロンプトを使って、画像ファイルのあるフォルダーに移動して、exiftoolを直接実行し、data.txtファイルに直接結果を書きだすこともできる。
C:\Windows\exiftool.exe -creativestyle *.jpg > data.txt
【スクリプト exif2clook.jse 実行】
data.txtをインプットデータとして、exif2clook.jseアイコンをダブルクリックして実行すると、out.txtというファイルが作成される。
作成されたout.txtの中身を開くと、以下の「out.txt サンプル」のように、renameコマンドが書かれている。
【renameコマンド実行】
out.txtの中に書かれているrenameコマンドに問題が無いかを確認した上で、コマンドプロンプトへ、renameコマンドをコピー&ペーストで実行する。
※ このスクリプトを使う場合は、自己責任でお願いいたします。また、事前に画像ファイルのバックアップを取った上で利用願います。
【data.txt サンプル:exiftoolの結果】
======== D:/Temp/temp1/DSC00487.JPG
Creative Style : Standard
======== D:/Temp/temp1/DSC00488.JPG
Creative Style : Portrait
======== D:/Temp/temp1/DSC00489.JPG
Creative Style : Neutral
======== D:/Temp/temp1/DSC00490.JPG
Creative Style : Vivid
======== D:/Temp/temp1/DSC00491.JPG
Creative Style : Vivid 2
======== D:/Temp/temp1/DSC00492.JPG
Creative Style : FL
======== D:/Temp/temp1/DSC00493.JPG
Creative Style : IN
======== D:/Temp/temp1/DSC00494.JPG
Creative Style : SH
======== D:/Temp/temp1/DSC00495.JPG
Creative Style : B&W
======== D:/Temp/temp1/DSC00496.JPG
Creative Style : Sepia
20 image files read
-- press ENTER --
【out.txt サンプル】
rename D:\Temp\temp1\DSC00487.JPG DSC00487_Standard.JPG
rename D:\Temp\temp1\DSC00488.JPG DSC00488_Portrait.JPG
rename D:\Temp\temp1\DSC00489.JPG DSC00489_Neutral.JPG
rename D:\Temp\temp1\DSC00490.JPG DSC00490_Vivid.JPG
rename D:\Temp\temp1\DSC00491.JPG DSC00491_Vivid2.JPG
rename D:\Temp\temp1\DSC00492.JPG DSC00492_FL.JPG
rename D:\Temp\temp1\DSC00493.JPG DSC00493_IN.JPG
rename D:\Temp\temp1\DSC00494.JPG DSC00494_SH.JPG
rename D:\Temp\temp1\DSC00495.JPG DSC00495_BW.JPG
rename D:\Temp\temp1\DSC00496.JPG DSC00496_Sepia.JPG
【リネーム後のファイル名】(違うファイルで試した結果なので、ファイル名が違う)
【スクリプトコード:exif2clook.jse】
var fs = WScript.CreateObject("Scripting.FileSystemObject");
var ts = fs.OpenTextFile("data.txt");
var str = ts.ReadAll();
str = str.replace(/\n /g, '\n\n--------');
str = str.replace(/\n/g, '').replace(/\r/g, '');
str = str.replace(/: /g, '');
str = str.replace(/-- press RETURN --/g, '');
str = str.replace(/--/g, '\n\n');
str = str.replace(/ /g, '');
str = str.replace(/CreativeStyle/g, ' _');
str = str.replace(/\(/g, '_').replace(/\)/g, '');
str = str.replace(/&/g, '');
str = str.replace(/========/g, '\nrename ');
var line_ary = str.split(/\n/);
var out = '';
for (var i=0; i<line_ary.length; i++) {
var buf = line_ary[i].split(/\.| /);
if (buf[3]) {
fn_ary = buf[1].split('\/');
out += buf[0] + ' ' + buf[1] + '.' + buf[2] + ' ' + fn_ary[fn_ary.length-1] + buf[3] + '.' + buf[2] + '\n';
}
}
out = out.replace(/\//g, '\\');
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var outfile = fso.CreateTextFile("out.txt", true, true);
outfile.Write(out);
【ExifToolとスクリプトを連続して実行する方法】
※ ExifToolとスクリプトを連続して実行するには、スクリプトを標準入力から読み込むようにする。
【スクリプトコード(標準入力版):exif2clooksin.jse】
var str = WScript.StdIn.ReadAll();
str = str.replace(/\n /g, '\n\n--------');
str = str.replace(/\n/g, '').replace(/\r/g, '');
str = str.replace(/: /g, '');
str = str.replace(/-- press RETURN --/g, '');
str = str.replace(/--/g, '\n\n');
str = str.replace(/ /g, '');
str = str.replace(/CreativeStyle/g, ' _');
str = str.replace(/\(/g, '_').replace(/\)/g, '');
str = str.replace(/&/g, '');
str = str.replace(/========/g, '\nrename ');
var line_ary = str.split(/\n/);
var out = '';
for (var i=0; i<line_ary.length; i++) {
var buf = line_ary[i].split(/\.| /);
if (buf[3]) {
fn_ary = buf[1].split('\/');
out += buf[0] + ' ' + buf[1] + '.' + buf[2] + ' ' + fn_ary[fn_ary.length-1] + buf[3] + '.' + buf[2] + '\n';
}
}
out = out.replace(/\//g, '\\');
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var outfile = fso.CreateTextFile("out.txt", true, true);
outfile.Write(out);
コマンドプロンプトで、ExifToolとスクリプトをパイプで結んで実行する。
※ Cscriptで実行しないと「WScript.StdIn」はエラーになるので、CSCRIPTを付けて実行。
C:\Windows\exiftool.exe -creativestyle *.jpg | CSCRIPT exif2clooksin.jse