火曜日, 12月 26, 2023

JavaScriptでAI遊び 15 
選択したオブジェクトのCMYK色を反転

CMYKモードで選択したオブジェクト色を反転させます。

// アクティブなドキュメントを取得
var doc = app.activeDocument;
// 選択されたオブジェクトを取得
var selectedItems = doc.selection;
// 色を反転させる関数
function invertCMYKColor(color) {
return [
100 - color[0],
100 - color[1],
100 - color[2]
//100 - color[3]
];
}
// 選択された各アイテムに対して処理
for (var i = 0; i < selectedItems.length; i++) {
var selectedItem = selectedItems[i];
// オブジェクトが塗りつぶし色を持つ場合
if (selectedItem.fillColor &&
selectedItem.fillColor.typename === "CMYKColor") {
// 塗りつぶし色を反転させる
var invertedColor = invertCMYKColor([
selectedItem.fillColor.cyan,
selectedItem.fillColor.magenta,
selectedItem.fillColor.yellow
//selectedItem.fillColor.black
//blackを指定すると処理後に元が0%なら処理後に100%
//となるので処理外としました。
]);
selectedItem.fillColor = new CMYKColor();
selectedItem.fillColor.cyan = invertedColor[0];
selectedItem.fillColor.magenta = invertedColor[1];
selectedItem.fillColor.yellow = invertedColor[2];
//selectedItem.fillColor.black = invertedColor[3];
//blackを指定すると処理後に元が0%なら処理後に100%
//となるので処理外としました。
}
// オブジェクトがストローク色を持つ場合
if (selectedItem.strokeColor &&
selectedItem.strokeColor.typename === "CMYKColor") {
// ストローク色を反転させる
var invertedStrokeColor = invertCMYKColor([
selectedItem.strokeColor.cyan,
selectedItem.strokeColor.magenta,
selectedItem.strokeColor.yellow
//selectedItem.strokeColor.black
//blackを指定すると処理後に元が0%なら処理後に100%
//となるので処理外としました。
]);
selectedItem.strokeColor = new CMYKColor();
selectedItem.strokeColor.cyan = invertedStrokeColor[0];
selectedItem.strokeColor.magenta = invertedStrokeColor[1];
selectedItem.strokeColor.yellow = invertedStrokeColor[2];
//selectedItem.strokeColor.black = invertedStrokeColor[3];
//blackを指定すると処理後に元が0%なら処理後に100%
//となるので処理外としました。
}
}
// 更新を反映
app.redraw();

カラー反転したいオブジェクトを選択し・・・













実行すると反転しますが、グラデーションやパターン、グループ化されたオブジェクトには適用されません。また、blackを設定すると処理後に元が0%なら処理後に100%とぶち壊しになってしまうので処理外としました。