クリエイター手抜きプロジェクト[339]Illustrator CS3〜6編 指定した輝度の塗りにする/古籏一浩

投稿:  著者:  読了時間:7分(本文:約3,200文字)


ネタ切れ三連発、というわけではないのですけど基本ネタは同じです。今回は輝度のみを変更するスクリプトです。

スクリプトを実行すると、輝度を入力するようにダイアログが表示されます。輝度の範囲は0〜100です。輝度はカラーパネルでHSBカラー表示を選択した際に表示されるB(Bright/輝度)の値です。値が少なくなれば暗く、大きくなれば明るくなります。なお、このスクリプトは輝度を加算するわけではありませんが、プログラムを改良すれば輝度の加減も可能です。





// 指定した輝度にする。色相や彩度はそのまま
(function(){
var defB = prompt("輝度を入れて下さい(0〜100)", 50);
if (!defB){ return; }
defB = parseFloat(defB)/100;
// 選択処理
var selObj = app.activeDocument.selection;
for(var i=0; i<selObj.length; i++){
RGBcolor = selObj[i].fillColor;
var R = RGBcolor.red;
var G = RGBcolor.green;
var B = RGBcolor.blue;
//$.writeln("RGB = "+R+","+G+","+B);
var HSB = RGBtoHSB(R, G, B);
var H = HSB.H;
var S = HSB.S;
var B = HSB.B; // 色相(今回は使っていない)
//$.writeln("HSB : "+H+", "+S+", "+B);
var tempRGB = HSBtoRGB(H, S, defB);
var myRGB = new RGBColor();
//$.writeln("temp:"+tempRGB.R+", "+tempRGB.G+", "+tempRGB.B);
myRGB.red = Math.floor(tempRGB.R*255);
myRGB.green = Math.floor(tempRGB.G*255);
myRGB.blue = Math.floor(tempRGB.B*255);
//$.writeln(myRGB.red+", "+myRGB.green+", "+myRGB.blue);
selObj[i].fillColor = myRGB;
}
})();
// RGBからHSB (R:0~255, G:0〜255, B:0〜255, h:0〜360, s:0〜1, B:0〜1)
function RGBtoHSB(r, g, b){
var h = s = v = 0;
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;
v = cmax;
var c = cmax - cmin;
if (cmax == 0) s = 0; else s = c/cmax;
if (s != 0){
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, B:v/255 }
}
// HSBからRGB (R:0~1, G:0〜1, B:0〜1, h:0〜360, s:0〜1, B:0〜1)
function HSBtoRGB(h, s, v){
var r = g = b = 0;
if (s < 0) s = 0;
if (s > 1) s = 1;
if (v < 0) v = 0;
if (v > 1) v = 1;
h = h % 360;
if (h < 0) h = h + 360;
h = h / 60;
i = Math.floor(h);
var f = h - i;
p1 = v * (1 - s);
p2 = v * (1 - s*f);
p3 = v * (1 - s*(1 - f));
if (i == 0) { r = v; g = p3; b = p1; }
if (i == 1) { r = p2;g = v; b = p1; }
if (i == 2) { r = p1;g = v; b = p3; }
if (i == 3) { r = p1;g = p2; b = v; }
if (i == 4) { r = p3;g = p1; b = v; }
if (i == 5) { r = v; g = p1; b = p2; }
return { R:r, G:g, B:b }
}

塗りではなく線の色を対象にしたい場合は以下のように変更してください。

RGBcolor = selObj[i].fillColor;
 ↓
RGBcolor = selObj[i].strokeColor;

selObj[i].fillColor = myRGB;
 ↓
selObj[i].strokeColor = myRGB;


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

選挙事務所の人の声、諸行無常の響きあり。惨敗民主のバラの花、盛者必衰の理をあらわす。

【選挙で一言】
田中眞紀子:みなさま、田中負け子です。
清水 宏保:スケートで滑るだけでは物足りず選挙でも滑ってみました。
麻生 太郎:どうも、圧勝太郎です。

選挙で、どの新聞・雑誌の予測があったのかを調べてみました。

・2012衆議院選挙:どの雑誌の予測が当たったか?
< http://www.openspc2.org/etc/senkyo/201212/ >

SoftBankのiPhone 5がようやくテザリングできるようになりました。これでiPad miniやNexus 7を持ち出して有効に活用できます。iPhone 5とNexus 7はBluetooth経由では接続できず(当然Wi-FiならOK)。

お正月は以前購入した↓をプレイしたいところ。

●ドラゴンスレイヤークロニクル
< http://www.amusement-center.com/project/egg/special/package_dragonslayerchronicle/ >

昔ヒットしたXanaduではなくて、元祖ドラゴンスレイヤーをプレイしたいだけですが。へんてこりんなキャラと自由すぎるルールがよいわけで(自分の家を押してお引っ越しできたり)。ということで、皆さんよりお年を。

・Nexus 7(アンドロイドタブレット)使い方辞典
< http://www.openspc2.org/reibun/Android/Nexus7/ >

・iPad mini(アイパッドミニ)使い方辞典
< http://www.openspc2.org/reibun/iPad/mini/2012/ >

・すべての人に知っておいてほしい jQuery & jQuery Mobileの基本原則
< http://www.amazon.co.jp/dp/4844362984 >

・HTML5ガイドブック 増補改訂版
< http://www.amazon.co.jp/dp/4844332937 >

・JavaScript逆引きハンドブック
< http://www.amazon.co.jp/dp/4863541082 >

・改訂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/ >
吉田印刷所の「印刷の泉」でも購入できるようになりました。