1. Qiita
  2. 投稿
  3. JavaScript

指定座標からRGB値を取得してファイルに書き出す

  • 3
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

さらに変更してスクリプトを直に編集しなくていいように

Photoshop2RGBfile3.jsx
#target photoshop
/*
   指定したフォルダ中のjpeg画像を順次開き、指定座標(4つ)からRGB値を取得して
   ファイル名と共にファイルに書き出します。
   実行すると、
   ・xy座標を入力してください。例)0,0,100,0,100,100,0,100
   ・書き出し先ファイル名を聞いてきますので指定してください。
   ・処理するjpegファイルのあるフォルダを指定してください。
 */

//入力XY座標を振り分け
var myPrompt=prompt("x,y,x,y,…と入力");
var myXY=myPrompt.split(",");
var myX=myY=[];
//if (myPrompt !=undefined){ ここ意味ないなー
    for (var i=0,a=0;i<myXY.length/2;i++,a=a+2){
         myX[i]=myXY[a];myY[i]=myXY[a+1];
        }
//    }

//保存先
//var mySavePath = File.saveDialog ("保存先");
var myResult = new File(File.saveDialog("書き出し先"));

var myDir = Folder.selectDialog("フォルダ選択");
//jpegファイルのみ読み込む
var myFiles = myDir.getFiles('*.jpg');
var myText =[];

for (var i=0; i<myFiles.length; i++){
    var myDoc = app.open(myFiles[i]);
    var mySampl = myDoc.colorSamplers.add([0,0]);
 var myNum =[];

   for (var a=0; a<myXY.length/2; a++){
       mySampl.move([myX[a],myY[a]]);
       var myColor = mySampl.color;
       //CMYKの場合はmyColor.cmyk.cyan、magenta,、yellow、blackにする
      myNum.push(
      Math.round(myColor.rgb.red)+'/'+
        Math.round(myColor.rgb.blue)+'/'+
        Math.round(myColor.rgb.green));
        }
    if(myResult.open("a")){
        myResult.write(myDoc.name + '\t'+myNum.join('\t')+'\n')
        myResult.close();
        }
myDoc.close(SaveOptions.DONOTSAVECHANGES);
    }
alert("終了しました");

古いの↓

Photoshop2RGBfile2.jsx
#target photoshop
/*
   指定したフォルダ中のjpeg画像を順次開き、指定座標(4つ)からRGB値を取得して
   ファイル名と共にファイルに書き出します。
   XY座標値を書き換えてください。

 */
//XY座標を記入
var myXPos= [0,100,100,0];
var myYPos= [0,0,100,100];

//保存先
//var mySavePath = File.saveDialog ("保存先");
var myResult = new File(File.saveDialog("書き出し先"));

var myDir = Folder.selectDialog("フォルダ選択");
//jpegファイルのみ読み込む
var myFiles = myDir.getFiles('*.jpg');
var myText =[];

for (var i=0; i<myFiles.length; i++){
    var myDoc = app.open(myFiles[i]);
    var mySampl = myDoc.colorSamplers.add([0,0]);
 var myNum =[];

//座標数に合わせa<4の値を変更
   for (var a=0; a<4; a++){
       mySampl.move([myXPos[a],myYPos[a]]);
       var myColor = mySampl.color;
       //CMYKの場合はmyColor.cmyk.cyan、magenta,、yellow、blackにする
      myNum.push(
      Math.round(myColor.rgb.red)+'/'+
        Math.round(myColor.rgb.blue)+'/'+
        Math.round(myColor.rgb.green));
        }
    if(myResult.open("a")){
        myResult.write(myDoc.name + '\t'+myNum.join('\t')+'\n')
        myResult.close();
        }
//  myText.push(myDoc.name + '\t'+myNum.join('\t'));

myDoc.close(SaveOptions.DONOTSAVECHANGES);
    }

↓古い

Photoshop2RGBfile.jsx
#target photoshop
/*
   指定したフォルダ中のjpeg画像を順次開き、指定座標(4つ)からRGB値を取得して
   ファイル名と共にファイルに書き出します。
   XY座標値と、保存先のフルパスを書き換えてください。

 */
//XY座標を記入
var myXPos= [0,100,100,0];
var myYPos= [0,0,100,100];

//保存先のフルパスを記入
var myResult = new File('~/Desktop/test.txt');

var myDir = Folder.selectDialog("フォルダ選択");
//jpegファイルのみ読み込む
var myFiles = myDir.getFiles('*.jpg');
var myText =[];

for (var i=0; i<myFiles.length; i++){
    var myDoc = app.open(myFiles[i]);
    var mySampl = myDoc.colorSamplers.add([0,0]);
 var myNum =[];

//座標数に合わせa<4の値を変更
   for (var a=0; a<4; a++){
       mySampl.move([myXPos[a],myYPos[a]]);
       var myColor = mySampl.color;
       //CMYKの場合はmyColor.cmyk.cyan、magenta,、yellow、blackにする
      myNum.push(
      Math.round(myColor.rgb.red)+'/'+
        Math.round(myColor.rgb.blue)+'/'+
        Math.round(myColor.rgb.green));
        }
    if(myResult.open("e")){
        myResult.read();
        myResult.write(myDoc.name + '\t'+myNum.join('\t')+'\n')
        myResult.close();
        }
//  myText.push(myDoc.name + '\t'+myNum.join('\t'));

myDoc.close(SaveOptions.DONOTSAVECHANGES);
    }