晴歩雨描

晴れた日は外に出て歩き、雨の日は部屋で絵を描く

ソニーのデジカメ写真のEXIFから、「クリエイティブルック」情報を抜き出して、画像ファイル名に「クリエイティブルック名」を付け足す。(ExifTool/JScript)

以前、「ソニーのデジカメ写真のEXIFから、クリエイティブスタイル、ピクチャーエフェクト情報を抜き出して、画像ファイル名にEXIF情報を付け足す。」という記事を書いた。

これは、「DSC-RX100M6」の「クリエイティブスタイル」や「ピクチャーエフェクト」を想定したものだった。

今回、先日購入した「ZV-1 II」の「クリエイティブルック」対応のスクリプトを作成。

(参考)ZV-1 II:クリエイティブルック

EXIF上は、「クリエイティブルック」も「Creative Style」。

今回は、「クリエイティブルック」対応の「Creative Style」だけを抜き出して、ファイル名に付加するシンプルなツールにした。

※ ExifToolおよび以下のツールの使用については、自己責任でお願いいたします。また、事前に画像ファイルのバックアップを取った上で利用願います。

【概略】
  1. ExifTool → [data.txt] → スクリプト(exif2clook.jse) → [out.txt]
    ※ [data.txt]を介さずに、[out.txt]を作成する方法を最後に記載。
  2. [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