1. Qiita
  2. 投稿
  3. photoshop

任意の色グラデのCMYK分解カーブを可視化する

  • 1
    いいね
  • 0
    コメント

一応動くからもう触らない宣言

この画像をデスクトップに置いておく。JSはESTKで実行する。
gradationplot.png

Photoshopで401×20pxの新規画像を作成、グラデを引いておき、最前面に(activeDocument)
以下を実行すると、デスクトップにプロファイル名のファイルが作られる。

PsCMYK.jsx
#target photoshop
var myColor = new SolidColor;
//app.showColorPicker();

var doc = app.documents.add(100, 50, 72, "CMYK Separation Curves", NewDocumentMode.CMYK);
var profile_name = doc.colorProfileName;
var myTime= Math.round(new Date().getTime() / 1000);
doc.close(SaveOptions.DONOTSAVECHANGES);
profile_name=profile_name.replace (/\//g, '_');



var myDoc=app.activeDocument;
myDoc.colorSamplers.removeAll();
var myPick=myDoc.colorSamplers.add([1,10]);

var myFile=new File('~/Desktop/'+profile_name+'_'+myTime);
myFile.open("w");
myFile.encoding='BINARY';
for (var myG=0;myG<101;myG++){
    var myCol=myPick.color;

    myC = myCol.cmyk.cyan;
    myM = myCol.cmyk.magenta;
    myY = myCol.cmyk.yellow;
    myK = myCol.cmyk.black;
    myR = myCol.rgb.red;
    myGr = myCol.rgb.green;
    myB = myCol.rgb.blue;   
    var myCol2 = new SolidColor();
 myCol2.cmyk.cyan=myC;
 myCol2.cmyk.magenta=myM;
 myCol2.cmyk.yellow=myY;
 myCol2.cmyk.black=myK;
 myR2=myCol2.rgb.red;
 myGr2=myCol2.rgb.green;
 myB2=myCol2.rgb.blue;
        myWrite = myG+"\t"+myR+"\t"+myGr+"\t"+myB+"\t"+myC+"\t"+myM+"\t"+myY+"\t"+myK+"\t"+Math.round(myR2)+"\t"+Math.round(myGr2)+"\t"+Math.round(myB2);
    myFile.writeln(myWrite);
    myPick.move([myG*4,225]);

    }
myFile.close();

作成されたファイルをBridgeで選択しておき、以下を実行

BridgeCMYKChart.jsx
#target "Bridge"
var myFile=app.document.selections;
var mySc=File(myFile[0].path);

var myLine=new Array();
mySc.open("r");
while(!mySc.eof){myLine.push(mySc.readln());}
mySc.close();

var myImg=new BitmapData(new File("~/Desktop/gradationplot.png"));

var myAry=new Array();
for(var i=0;i<100;i++){
    myAry[i]=myLine[i].split("\t");

    var myColor=new Color(0,255,255);
    var myColor2 = new Color(myAry[i][1],myAry[i][2],myAry[i][3]);
    var myColor3 = new Color(myAry[i][8],myAry[i][9],myAry[i][10]);
    myDraw2(i*4,201,myColor2);
    myDraw2(i*4,221,myColor3);
myDraw(i*4, 200-myAry[i][4]*2,myColor);
        var myColor=new Color(255,0,255);
myDraw(i*4, 200-myAry[i][5]*2, myColor);
        var myColor=new Color(255,255,0);
 myDraw(i*4, 200-myAry[i][6]*2, myColor);
        var myColor=new Color(0,0,0);
 myDraw (i*4, 200-myAry[i][7]*2, myColor);

}

myImg.exportTo(new File(myFile[0].path+".jpg"),100);

function myDraw(x,y,c){
    for(var a=0;a<4;a++){
        for(var b=0;b<2;b++){
    myImg.setPixel (x+a, y+b, c);
    }
}
}
function myDraw2(x,y,c){
    for(var a=0;a<4;a++){
        for(var b=0;b<20;b++){
    myImg.setPixel (x+a, y+b, c);
    }
}
}

こういう比較ができる。
カラーバーの上段は元RGB、下段はCMYK分解色

Japan Color 2001 Coatedでの紫色の分解カーブ

jp2001.jpg

Japan Color 2011 Coatedでの紫色の分解カーブ

jp2011.jpg

2001では濃い紫がグレーになってしまうが、2011では素直に出ている。