デザイン自動化メモ(InDesignのテキストフレームの背景色をグレースケールにする)
12336 ワード
DTPのカンプチェック時に一部のオブジェクト以外をグレースケールにする。
検版とか機械学習するデータを作るときに使えないかと試作。
InDesignはオブジェクトごとに、やり方が異なります。
とりあえず、テキストフレームの背景色から。
特定の条件を満たすテキストフレームの背景色を変更する
ここでは、グレースケールに変換する対象を、スクリプトラベルが空白、カラー指定がスウォッチの場合に限っています。
グレースケールへの変換は、RGB経由で輝度を出しています。
2018/6/24 輝度からKへの計算でK=100-輝度のところK=輝度と間違えていました。訂正しました。
function main() {
pageObj = app.activeDocument.pages[0];
total = pageObj.allPageItems.length;
for (i=0;i<total;i++) {
var label = "";
var typeName = "";
var pageItem;
pageItem = pageObj.allPageItems[i];
var typeName = pageItem.constructor.name;
label = pageItem.label;
// テキストフレームのときの背景色を変更する。
if (typeName=="TextFrame") {
// 特定のテキストフレームは処理をしない。ここではスクリプトラベルで判断する。
if (label=="hoge") {
continue;
}
// 設定されている背景色を取得する。
var col = pageItem.fillColor;
var cs = col.space;
// カラーモデルがCMYKなのを確認し、CMYK以外なら処理しない。
// 実際に使う場合はエラーにします。
if (cs!=ColorSpace.CMYK) {
continue;
}
var c = col.colorValue[0];
var m = col.colorValue[1];
var y = col.colorValue[2];
var k = col.colorValue[3];
// InDesignのCMYKは0% - 100%になるので、0-255にスケール変換
var c255 = c*2.55;
var m255 = m*2.55;
var y255 = y*2.55;
var k255 = k*2.55;
// なんちゃってRGB
var r = Math.max(0,255- c255 - k255);
var g = Math.max(0,255- m255 - k255);
var b = Math.max(0,255- y255 - k255);
// 輝度を出す
var luminance = Math.round(0.2990 * r + 0.5870 * g + 0.1140 * b);
// スケールを 0% - 100%に戻す
var retk = 100 - Math.round(luminance / 2.55);
alert(retk);
// スォッチを追加
var sname = "K" + retk;
for (i=0;i<app.activeDocument.colors.length;i++) {
if (app.activeDocument.colors[i].name==sname) {
app.activeDocument.colors[i].remove();
}
}
colorOption = {colorValue:[0,0,0,retk],model:ColorModel.process,space:ColorSpace.cmyk,name:sname}
colorObj = app.activeDocument.colors.add(colorOption);
// 背景色を反映
pageItem.fillColor = colorObj;
}
}
}
main();
Author And Source
この問題について(デザイン自動化メモ(InDesignのテキストフレームの背景色をグレースケールにする)), 我々は、より多くの情報をここで見つけました https://qiita.com/esflat/items/e7c2014eff3409e1457f著者帰属:元の著者の情報は、元の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 .