クリエイター手抜きプロジェクト[326]Illustrator CS3〜6編 一定範囲の輝度の図形を選択する/古籏一浩

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


今回は、Illustratorで選択した図形の中から、一定範囲の輝度の図形を選択するスクリプトです。Illustratorには明るさを指定して選択する機能がないので、作成してみました。

スクリプトの使い方ですが、あらかじめ対象となる図形を選択しておきます。その後、スクリプトを実行します。輝度の開始値と終了値を入力します。

これで、該当する範囲の輝度を持つ図形だけが選択された状態で残ります。RGB→HSL変換時に誤差が発生するのと、IllustratorではHSBなので整合性を取る時点でも、若干誤差が発生することがあります。





// 指定した範囲の輝度(0〜100)を選択
(function(){
var text = prompt("開始範囲(輝度0〜100)入れてください", 30);
if (!text){ return; }
var startRange = parseFloat(text);
var text = prompt("終了範囲(輝度0〜100)入れてください", 50);
if (!text){ return; }
var endRange = parseFloat(text);
//$.writeln("startRange = "+startRange);
//$.writeln("endRange = "+endRange);
// 選択処理
var selObj = app.activeDocument.selection;
for(var i=0; i<selObj.length; i++){
var RGBcolor = selObj[i].fillColor;
var R = RGBcolor.red;
var G = RGBcolor.green;
var B = RGBcolor.blue;
//$.writeln("RGB = "+R+","+G+","+B);
var HSL = RGBtoHSL(R, G, B);
var H = HSL.H;
var S = HSL.S;
var L = HSL.L;
//$.writeln("HSL = "+H+","+S+","+L);
L = L * 100; // 0〜100の値に調整
L = L * 2; // イラストレータがHSBなので補正
//$.writeln("Lightness = " + L);
if ((L <startRange) || (L> endRange)){
selObj[i].selected = false;
//$.writeln("選択を解除しました");
}
//$.writeln("-------------");
}
})();
// RGBから色相に変換
// (R:0~255, G:0〜255, B:0〜255, h:0〜360, s:-1〜1, l:0〜1)
function RGBtoHSL(r, g, b){
var h = 0;
var s = 0;
var l = 0;
var cmax, cmin;
if ( r>= g ) cmax = r; else cmax = g;
if ( b> cmax) cmax = b;
if ( r <= g ) cmin = r; else cmin = g;
if ( b <cmin) cmin = b;
l = (cmax + cmin) / 2;
var c = cmax - cmin;
if ( c != 0 ){
if ( l <= 0.5 ) s = c / (cmax + cmin); else s = c / ( 2 - (cmax + cmin));
if ( r == cmax){ h = ( g - b ) / c;
}else{
if (g == cmax){ h = 2 + ( b - r ) / c;
}else{
if ( b == cmax ) h = 4 + ( r - g ) / c;
}
}
h = h * 60;
if ( h <0 ) h = h + 360;
}
return { H:h, S:s, L:l/255 };
}


Illustratorから実行せずにESTKから実行する場合は、上記$.writeln()の前のコメント(//)を削除すると、どのような色相、彩度なのかがJavaScriptコンソールに出力されます。


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

信州は、もう秋の虫が鳴いてる状態。猛暑も過ぎ去って、過ごしやすくなりました。いろいろ用事が多くて、今年の夏は撮影とか出かけられませんでした。仕方ないので、家の窓から西の空を撮影する毎日。

楽天Koboですが、8月17日に以下のような題名のメールが来ました。

「電子ブック楽天<kobo>◆まもなく終了!・・・」

もう終了、撤退するのか! と思ったら......

「電子ブック楽天<kobo>◆まもなく終了!◆kobo Touchご購入で最大3,000ポイントプレゼント(2012/08/17)」

でした。

・すべての人に知っておいてほしい スマートフォンサイトデザインの基本原則【New!!】
< http://www.amazon.co.jp/dp/4844362844 >

・毎度おなじみASCII.jpの連載
「DeviceOrientation Eventでブロック崩し作ってみた」
< http://ascii.jp/elem/000/000/711/711428/ >

・PDF構造解説
< http://www.amazon.co.jp/dp/4873115493 >

・10日で覚えるHTML5入門教室
< http://www.amazon.co.jp/dp/4798124184 >

・AndroidのためのHTML5本格アプリ開発
< http://www.amazon.co.jp/dp/4897978971/ >

・改訂5版JavaScriptポケットリファレンス
< http://www.amazon.co.jp/dp/4774148199 >

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

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

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/ >
吉田印刷所の「印刷の泉」でも購入できるようになりました。