火曜日, 12月 19, 2023

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

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

 // アクティブなドキュメントを取得
var doc = app.activeDocument;
// 選択されたオブジェクトを取得
var selectedItems = doc.selection;
// 色を反転させる関数
function invertColor(color) {
return [255 - color[0], 255 - color[1], 255 - color[2]];
}
// 選択された各アイテムに対して処理
for (var i = 0; i < selectedItems.length; i++) {
var selectedItem = selectedItems[i];
// オブジェクトが塗りつぶし色を持つ場合
if (selectedItem.fillColor &&
        selectedItem.fillColor.typename === "RGBColor") {
// 塗りつぶし色を反転させる
var invertedColor = invertColor([
selectedItem.fillColor.red,
selectedItem.fillColor.green,
selectedItem.fillColor.blue
]);
selectedItem.fillColor = new RGBColor();
selectedItem.fillColor.red = invertedColor[0];
selectedItem.fillColor.green = invertedColor[1];
selectedItem.fillColor.blue = invertedColor[2];
}
// オブジェクトがストローク色を持つ場合
if (selectedItem.strokeColor &&
        selectedItem.strokeColor.typename === "RGBColor") {
// ストローク色を反転させる
var invertedStrokeColor = invertColor([
selectedItem.strokeColor.red,
selectedItem.strokeColor.green,
selectedItem.strokeColor.blue
]);
selectedItem.strokeColor = new RGBColor();
selectedItem.strokeColor.red = invertedStrokeColor[0];
selectedItem.strokeColor.green = invertedStrokeColor[1];
selectedItem.strokeColor.blue = invertedStrokeColor[2];
}
}
// 更新を反映
app.redraw();

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













実行すると反転しますが、グラデーションやパターン、グループ化されたオブジェクトには適用されません。