CMYKカラーを全て書き出す
16317 ワード
Photoshop「カラー設定」で色域を書き出したいCMYKプロファイルを選択しておき、以下を実行
lab2cmyk.jsx
var myFile = new File('~/Desktop/labcmyk.txt');
myFile.open("w");
myFile.encoding='BINARY';
myColor = new SolidColor;
for (var myL = 0; myL<=100;myL++){
for (var myA = -128 ; myA <=127;myA++){
for (var myB = -128 ; myB <=127;myB++){
myColor.lab.l = myL;
myColor.lab.a = myA;
myColor.lab.b = myB;
myC = Math.round(myColor.cmyk.cyan);
myM = Math.round(myColor.cmyk.magenta);
myY = Math.round(myColor.cmyk.yellow);
myK = Math.round(myColor.cmyk.black);
myWrite = myC + '\t' + myM + '\t' + myY +'\t' + myK
myFile.writeln(myWrite);
}
}
}
myFile.close();
Labスペース全てでCMYK値が書き出される。
sortし、uniqで同一のCMYK値を削除→色域外が削除される。
CMYKを0-100で単純に描画しても意味が無い…CMYK400%はありえない…のでLabから削り取る。ただし面積比率は評価していない。
処理したテキストを読み込んでPhotoshopで描画
CMYKALLColors.jsx
app.preferences.rulerUnits = Units.PIXELS;
var myDoc = app.documents.add(872,872,72,"CMYK ALL Colors",NewDocumentMode.CMYK);
var myFile = new File('~/Desktop/labcmyksortuniq.txt');
myFile.open('r');
var myText = myFile.readln();
myX =0;
myY =0;
myColor=new SolidColor();
while ( myText !=''){
var myColorText=myText.split ("\t");
myColor.cmyk.cyan=myColorText[0];
myColor.cmyk.magenta=myColorText[1];
myColor.cmyk.yellow=myColorText[2];
myColor.cmyk.black=myColorText[3];
myDoc.selection.select([[myX,myY],[myX+1,myY],[myX+1,myY+1],[myX,myY+1]]);
myDoc.selection.fill(myColor,ColorBlendMode.NORMAL,100,false);
myX=myX+1;
if (myX >= 873){
myY=myY+1;
myX=0;
}
myText = myFile.readln();
}
ちょう遅い。selection&fillが遅い。CCだとさらに遅いので、CS6で実行して5時間以内(i7)
あまりに遅いのでIllustratorで描画して書き出すことにした
CMYKALLCOLORSAI.jsx
var myDoc = activeDocument;
var myFile = new File('~/Desktop/labcmyksortuniq.txt');
myFile.open('r');
var myText = myFile.readln();
myX =0;
myY =0;
function setColor(c,m,y,k){
var myColor=new CMYKColor();
myColor.cyan=c;
myColor.magenta=m;
myColor.yellow=y;
myColor.black=k;
return myColor;
}
while ( myText !=''){
var myColorText=myText.split ('\t');
myColor=setColor(myColorText[0],myColorText[1],myColorText[2],myColorText[3]);
myPath=myDoc.pathItems.rectangle(myY,myX,1,1);
myPath.filled=true;
myPath.stroked =false;
myPath.fillColor=myColor;
myX=myX+1;
if (myX >= 850){
myY=myY-1;
myX=0;
}
myText = myFile.readln();
}
Author And Source
この問題について(CMYKカラーを全て書き出す), 我々は、より多くの情報をここで見つけました https://qiita.com/yamo74/items/3bfcb84642432091bfd7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .