見出し画像

Photoshopスクリプトでレイヤー選択を簡単に切り替える方法

はじめに

Photoshopで作業をしていると、特定のレイヤーとその前に選択していたレイヤー間で繰り返し切り替えることがよくあります。今回は、Photoshop 2022で使えるスクリプトを開発しました。このスクリプトを使うと、特定のレイヤー(例: "MASK")と直前に選択していたレイヤーの選択を簡単に切り替えることができます。
★このスクリプトはChatGPT4を活用して作成しています。

スクリプトの概要

  1. "MASK" レイヤーと、直前に選択していたレイヤー間で選択を切り替える

  2. レイヤー選択を切り替えた際、表示/非表示状態は変更されない

  3. レイヤーセット内にあるレイヤーも対象になる

アクションに登録して使えばワンボタンで切替可能!

スクリプトのコード

以下が、今回開発したスクリプトのコードです。Photoshop 2022で実行して、期待通りに動作することを確認しています。

#target photoshop
(function() {
    var tempFileName = 'layerSwitcherTemp.txt';
    var maskLayerName = 'MASK';
    var tempFile = new File(Folder.temp + '/' + tempFileName);
    
    function saveLayerInfoToFile(layerName, visibility) {
        tempFile.open('w');
        tempFile.write(layerName + '\n' + visibility);
        tempFile.close();
    }

    function getLayerInfoFromFile() {
        if (!tempFile.exists) return null;
        tempFile.open('r');
        var layerName = tempFile.readln();
        var visibility = tempFile.readln() === 'true';
        tempFile.close();
        return {name: layerName, visible: visibility};
    }

    function getLayerByName(layerName, layers) {
        for (var i = 0; i < layers.length; i++) {
            var layer = layers[i];
            if (layer.typename === 'LayerSet') {
                var foundLayer = getLayerByName(layerName, layer.layers);
                if (foundLayer) return foundLayer;
            } else if (layer.name === layerName) {
                return layer;
            }
        }
        return null;
    }

    function main() {
        var doc = app.activeDocument;
        var selectedLayer = doc.activeLayer;

        if (selectedLayer.name === maskLayerName) {
            var layerInfo = getLayerInfoFromFile();
            if (layerInfo) {
                var previousLayer = getLayerByName(layerInfo.name, doc.layers);
                if (previousLayer) {
                    doc.activeLayer = previousLayer;
                    previousLayer.visible = layerInfo.visible;
                }
            }
        } else {
            var maskLayer = getLayerByName(maskLayerName, doc.layers);
            if (maskLayer) {
                saveLayerInfoToFile(selectedLayer.name, selectedLayer.visible);
                doc.activeLayer = maskLayer;
            } else {
                alert('レイヤー "' + maskLayerName + '" が見つかりませんでした。');
            }
        }
    }

    app.activeDocument.suspendHistory('Switch Layer Selection', 'main()');
})();

使い方

  1. 上記のスクリプトをコピーし、テキストエディタで新しいファイルを作成し、コードを貼り付けます。

  2. ファイルを "*.jsx" の拡張子で保存します(例: "LayerSwitcher.jsx")。

  3. Photoshopで、[ファイル] > [スクリプト] > [参照] から作成したスクリプトファイルを選択して実行します。

  4. "MASK" レイヤーと直前に選択していたレイヤー間で選択が切り替わることを確認します。

まとめ

今回のスクリプトを使えば、Photoshopで特定のレイヤーと直前に選択していたレイヤー間で選択を簡単に切り替えることができます。これにより、作業効率が向上し、より快適な画像編集が可能になります。

この記事が参加している募集

#AIとやってみた

27,336件

この記事が気に入ったらサポートをしてみませんか?