クリエイター手抜きプロジェクト[440]Adobe Photoshop CS3〜CC 2015編 フォルダ内にある暗い画像をピックアップする/古籏一浩

投稿:  著者:  読了時間:6分(本文:約2,800文字)


今回は、Photoshopでフォルダ内にある暗い画像をピックアップするスクリプトです。ピックアップした画像は、指定したフォルダにエイリアスが作成されます。エイリアスが作成されるので、後で確認する時に便利です。



// Photoshopの画像が暗い場合にエイリアスを作成する
(function(fileType, level){
// 調べるファイルがあるフォルダを指定する
var folderObj = Folder.selectDialog("画像の明るさを調べるファイルがあるフォルダを選択してください");
if (!folderObj){ return; } // キャンセルされた場合は何も処理しない
// エイリアスを入れるフォルダを指定する
var saveFolder = Folder.selectDialog("結果(エイリアス)を保存するフォルダを選択してください");
if (!saveFolder){ return; } // キャンセルされた場合は何も処理しない
makeAliasList(folderObj, level);
alert("処理が終了しました");
// エイリアスを作成する関数
function makeAliasList(folderObj, level){
// ファイル一覧を取得する
var fileList = folderObj.getFiles(fileType);
// ファイルの数だけ開いて画像の明るさを調べる
for(var i=0; i<fileList.length; i++){
try{ // 開けなかった!
app.open(fileList[i]);
}catch(e){
continue;
}
var flag = checkImageLevel(level);
if (flag == true){
// ファイル名が重複しないようにスラッシュをアンダーバーにしたファイル名を使う
var filename = fileList[i].fsName.replace(new RegExp("/", "g"), "_");
// エイリアスとなるファイルオブジェクトを作成する
var aliasFileObj = new File(saveFolder+"/"+filename);
// エイリアスを作成する
var flag = aliasFileObj.createAlias(fileList[i]);
if (flag == false){
$.writeln("失敗:"+filename);
// もし、アラートダイアログを表示した方がいい場合は以下の行の//を消してください。
// alert("失敗:"+filename);
}
}
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
// フォルダを含めた一覧を取得する
fileList = folderObj.getFiles();
for(var i=0; i<fileList.length; i++){
// フォルダかどうか調べる
if(fileList[i].getFiles){
makeAliasList(fileList[i]); // フォルダの場合は再帰呼び出し
}
}
}
// 画像の暗さを調べる関数
function checkImageLevel(level){
// 画像を統合してから調べる
try{
app.activeDocument.mergeVisibleLayers();
}catch(e){}
// ヒストグラムを取得する
try{
var h = app.activeDocument.histogram;
}catch(e){
app.activeDocument.changeMode(ChangeMode.RGB);
var h = app.activeDocument.histogram;
}
var dark = 0;
var normal = 0;
// ピクセル数の合計を求める
for(var i=0; i<level; i++){ dark = dark + h[i]; }
for(var i=level; i<256; i++){ normal = normal + h[i]; }
if (dark > normal){ return true; }else{ return false; }
}
})("*.jpg", 64);

どのくらい暗ければピックアップするかは、最後の行の数値を変更して下さい。

("*.jpg", 64)
 ↓
("*.jpg", 32)

値を小さくすれば、するほど暗い画像がピックアップされます。また、選択されるファイルの種類は "*.jpg" を変更してください。Photoshopファイルなら"*.psd" を指定してください。

暗い画像ではなく明るい画像をピックアップしたい場合は、最後の3行目を以下のように変更してください。

if (dark > normal){ return true; }else{ return false; }
    ↓
if (dark < normal){ return true; }else{ return false; }

次に最後の行を以下のように変更してください。値が大きくなればなるほど明るい画像がピックアップされます。

})("*.jpg", 64);
  ↓
})("*.jpg", 192);

【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

先日の暴風で田んぼのはぜかけした稲が倒れるという惨事に……


まあ、農業系はそういうこともあるのは仕方ない。まわりには倒れてない田んぼもあって何とも運が悪かったということで、根性と気力で立て直しました。



・JavaScriptによるデータビジュアライゼーション入門
http://www.amazon.co.jp/dp/4873117461/

・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/

・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA

・Adobe JavaScriptリファレンス
http://www.amazon.co.jp/dp/B00FZEK6J6/

・ExtendScript Toolkit(ESTK)基本編
http://www.amazon.co.jp/dp/B00JUBQKKY/

・データビジュアライゼーションのためのD3.js徹底入門
http://www.amazon.co.jp/dp/4797368861

・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/