//=============================================================== //【 ソフト名 】一括色置換スクリプトg_changer ver.1(2006年7月20日版) //       一括色置換データ作成.js //【 著作権者 】(c)2006 玉英・ZARASU.com //【 Homepage 】http://www.zarasu.com/ //【 E-mail 】master@zarasu.com //=============================================================== //設定 //色範囲選択時のlabカラー誤差の範囲 var Sa = 1; //**************************************************************************** if (!app.documents.length) { // 画像が開かれてない場合警告を出す alert("画像が開いてません"); }else{ var OriginalUnit = preferences.rulerUnits; preferences.rulerUnits = Units.PIXELS; var docRef = app.activeDocument; if(docRef.layers.length != 2){ alert("レイヤー枚数は必ず2枚でよろしく"); }else{ //画像を作業用に複製する docRef = activeDocument.duplicate(); var a = new Array (2); //レイヤー名を変更 docRef.artLayers[0].name = "ato"; docRef.artLayers[1].name = "moto"; //atoレイヤーを「差の絶対値」に docRef.artLayers.ato.blendMode = BlendMode.DIFFERENCE; //黒色部分を選択 SelByColor("","","",1); //atoレイヤーのモード戻す docRef.artLayers.ato.blendMode = BlendMode.NORMAL; //選択範囲内削除 docRef.activeLayer = docRef.artLayers.ato; docRef.selection.clear(); docRef.activeLayer = docRef.artLayers.moto; docRef.selection.clear(); //選択を解除 docRef.selection.deselect(); //ここから色の比較&取得********************************* var RGB_color = new Array (); while(1){ //ピクセルのある範囲を取得 deClear(); //不透明ピクセルがなくなったらループを抜ける if(!x2){ //ドキュメントを保存しないで閉じる activeDocument.close(SaveOptions.DONOTSAVECHANGES); break; } //切り抜き activeDocument.crop([x1,y1,x2,y2]); //画像を作業用に複製して縦1ピクセル切り抜く docRef = activeDocument.duplicate(); activeDocument.crop([0,0,app.activeDocument.width,1]); //ピクセルのある範囲(x1)を特定、色を取得 deClear(); var rgb0 = getPixel(x1,0) //atoレイヤー削除、motoレイヤーの色を取得 docRef.artLayers.ato.remove(); var rgb1 = getPixel(x1,0) RGB_color.push(rgb1[0],rgb1[1],rgb1[2]); //moto RGB_color.push(rgb0[0],rgb0[1],rgb0[2]); //ato //ドキュメントを保存しないで閉じる activeDocument.close(SaveOptions.DONOTSAVECHANGES); docRef = app.activeDocument; //atoレイヤーのrgb値で範囲選択 colObj = new SolidColor(); colObj.rgb.red = rgb0[0]; colObj.rgb.green = rgb0[1]; colObj.rgb.blue = rgb0[2]; l = colObj.lab.l; a = colObj.lab.a; b = colObj.lab.b; SelByColor(l,a,b); //選択範囲内削除 docRef.activeLayer = docRef.artLayers.ato; docRef.selection.clear(); docRef.activeLayer = docRef.artLayers.moto; docRef.selection.clear(); //選択を解除 docRef.selection.deselect(); } //ここまで*********************************************** var Text_doc = ""; //テキストに書き出すために整形する for ( j=0 ; j 0) { R = i; break; } data = docObj.channels[1].histogram; for (i=0; i 0) { G = i; break; } data = docObj.channels[2].histogram; for (i=0; i 0) { B = i; break; } docObj.selection.deselect(); return [R,G,B]; }