クリエイター手抜きプロジェクト[354]Photoshop CS5/CS6編 4色グラデーション/古籏一浩

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


今回は、Photoshop CS5/CS6で4色グラデーションを描画するスクリプトです。CS5専用でCS3/CS4では動作しません。これはCS5から追加されたカラーピッカーを利用しているためです。

以下のスクリプトを実行すると、4回カラーピッカーが表示されます。色は左上、右上、左下、右下の順番で指定していきます。なお、このスクリプトは非常に低速です。ESTK(Extend Script Tool Kit)から実行すれば、進行状況がJavaScriptコンソールに表示されます。





// 4色グラデーションを描画
(function(){
// 単位を保存しPixelに設定する
var saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
// カラーピッカーを表示
app.showColorPicker();
var p1 = app.foregroundColor.rgb; // 左上のカラー
app.showColorPicker();
var p2 = app.foregroundColor.rgb; // 右上のカラー
app.showColorPicker();
var p3 = app.foregroundColor.rgb; // 左下のカラー
app.showColorPicker();
var p4 = app.foregroundColor.rgb; // 右下のカラー
// 選択範囲座標を取得
var rect = app.activeDocument.selection.bounds;
var x1 = parseInt(rect[0]);
var y1 = parseInt(rect[1]);
var x2 = parseInt(rect[2]);
var y2 = parseInt(rect[3]);
var RGBColor = new SolidColor();
// グラデーションを描画する前に処理を高速化する前計算(加算方式)
var gradW = x2-x1; // 縦幅
var gradH = y2-y1; // 縦幅
var dRL = (p3.red - p1.red)/gradH; // 加算数
var dGL = (p3.green - p1.green)/gradH;
var dBL = (p3.blue - p1.blue)/gradH;
var dRR = (p4.red - p2.red)/gradH; // 加算数
var dGR = (p4.green - p2.green)/gradH;
var dBR = (p4.blue - p2.blue)/gradH;
var startRL = p1.red; // 開始色(左側)
var startGL = p1.green;
var startBL = p1.blue;
var startRR = p2.red; // 開始色(右側)
var startGR = p2.green;
var startBR = p2.blue;
var CM = ColorBlendMode.NORMAL;
for(var y=y1; y<y2; y++){
var dR = (startRR - startRL)/gradW; // 横の加算数
var dG = (startGR - startGL)/gradW;
var dB = (startBR - startBL)/gradW;
var tR = startRL;
var tG = startGL;
var tB = startBL;
for(var x=x1; x<x2; x++){
var area = [[x,y],[x+1,y],[x+1,y+1],[x,y+1]];
app.activeDocument.selection.select(area);
RGBColor.rgb.red = parseInt(tR);
RGBColor.rgb.green = parseInt(tG);
RGBColor.rgb.blue = parseInt(tB);
app.activeDocument.selection.fill(RGBColor,CM, 100, false);
tR += dR;
tG += dG;
tB += dB;
}
startRL += dRL;
startGL += dGL;
startBL += dBL;
startRR += dRR;
startGR+= dGR;
startBR += dBR;
$.writeln((y-y1)+"/"+(y2-y1));
}
preferences.rulerUnits = saveUnit;
app.activeDocument.selection.deselect();
})();


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

今月発売される予定だった、enchantMoon(エンチャントムーン)という手書きタブレットが、来月に発売が延期になってしまいました。手元に来たら、またネタで書きます。手書きでプログラミングできるというらしいけど、どうなんでしょう。

5月25日に長野県塩尻市でも「Devfest Japan Google I/O報告会」が行われます。場所や時間等、申し込みに関しては以下のページからお願いします。

・Devfest Japan Google I/O報告会 信州会場
< https://plus.google.com/events/cc9rfbg6mo92cn04hqg0kn2otn4 >

・公式ページのURL
< https://sites.google.com/site/devfestjapan2013/ >

前回は初めてのイベントだったので不手際もありましたが、今回は2回目ということで多分それなり・・・にできるかなと。あと、長野県中信地区のキャラが何体か会場にいます。着ぐるみで出てくる予定。

・玄蕃サラ
< http://ameblo.jp/maru-kouhou/ >

・ハイビジョン映像素材集。テレビでよく出てくる立山黒部アルペンルートの4K素材を追加。
< http://www.openspc2.org/HDTV/ >

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

・Kindle Fire HD使い方辞典
< http://www.openspc2.org/reibun/Kindle/Fire_HD/ >

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

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

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

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

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

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