先日、ソニーのデジカメ写真のEXIFから、クリエイティブスタイル、ピクチャーエフェクト情報を抜き出して、画像ファイル名にEXIF情報を付け足すJScriptを作成した。
今回、パナソニックのデジカメ写真のEXIFから、フォトスタイル、クリエイティブコントロール情報を抜き出して、画像ファイル名にEXIF情報を付け足すJScriptを作成。
前提としてExifToolを使うが、そのインストール方法等は上のブログ記事を参照。
exiftool.exeのデスクトップに置くショートカットのリンク先は次のように設定する。
C:\Windows\exiftool.exe -k -PhotoStyle -makernotes:contrast -makernotes:saturation -makernotes:sharpness -AdvancedSceneMode
このショートカットアイコンに、画像ファイルを複数まとめてドラッグ&ドロップすると、コマンドプロンプトに似たウインドウが開いて、まとめて結果が表示される。
※ 一度にウインドウに表示できる行数に制限がある模様。1度にドラッグ&ドロップする画像ファイルは40個以内にした方が良い。
このウインドウに表示された結果テキストをCtrl-A、Ctrl-Cでコピーし、exif2ren.jseと同じフォルダにあるdata.txtを開いてペーストし保存する。
exif2ren.jseアイコンをダブルクリックして実行すると、out.txtというファイルが作成される。
作成されたout.txtの中身を開くと、以下の「out.txt サンプル」のように、renameコマンドが書かれている。
Contrast、Saturation、Sharpnessの補正がある場合、頭文字+補正値で表現する。ただ、Saturation、SharpnessはどちらもSで始まるので、それぞれ、tとpにした。c-2 t+2 p+2のように表現。
renameコマンドに問題が無いかを確認した上で、コマンドプロンプトへ、renameコマンドをコピー&ペーストで実行する。
※ このスクリプトを使う場合は、自己責任でお願いいたします。また、事前に画像ファイルのバックアップを取った上で利用願います。
【data.txt サンプル:exiftoolの結果】
======== C:/work/exiftool/data/P1310956.JPG Photo Style : Standard or Custom Contrast : Normal Saturation : Normal Sharpness : Normal Advanced Scene Mode : Monochrome ======== C:/work/exiftool/data/P1310957.JPG Photo Style : Standard or Custom Contrast : Normal Saturation : Normal Sharpness : Normal Advanced Scene Mode : Dynamic Monochrome ======== C:/work/exiftool/data/P1310960.JPG Photo Style : Standard or Custom Contrast : Normal Saturation : Normal Sharpness : Normal Advanced Scene Mode : Rough Monochrome ======== C:/work/exiftool/data/P1310961.JPG Photo Style : Standard or Custom Contrast : Normal Saturation : Normal Sharpness : Normal Advanced Scene Mode : Silky Monochrome 4 image files read -- press RETURN --
【out.txt サンプル】
rename C:\work\exiftool\data\P1310956.JPG P1310956_Monochrome.JPG rename C:\work\exiftool\data\P1310957.JPG P1310957_DynamicMonochrome.JPG rename C:\work\exiftool\data\P1310960.JPG P1310960_RoughMonochrome.JPG rename C:\work\exiftool\data\P1310961.JPG P1310961_SilkyMonochrome.JPG
【スクリプトコード:exif2ren.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(/PictureEffect/g, '_'); str = str.replace(/PhotoStyle/g, ' _'); str = str.replace(/AdvancedSceneMode/g, '_'); str = str.replace(/Contrast/g, '_c'); str = str.replace(/Saturation/g, '_t'); str = str.replace(/Sharpness/g, '_p'); str = str.replace(/\(/g, '_').replace(/\)/g, ''); str = str.replace(/StandardorCustom/g, ''); str = str.replace(/_Standard/g, ''); str = str.replace(/_Off/g, ''); str = str.replace(/&/g, ''); str = str.replace(/_c0/g, '').replace(/_t0/g, '').replace(/_p0/g, ''); str = str.replace(/_cNormal/g, '').replace(/_tNormal/g, '').replace(/_pNormal/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] && 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);