Photoshop 自動化 : レイヤー1からレイヤーnまでjpgで出力

Photoshopの自動化スクリプトです。

レイヤーの名前が「レイヤー 1」「レイヤー 2」という形式 (レイヤーを新しく作成した時にデフォルトで付けられる名前)のレイヤーをすべてJPGファイルで出力します。

利用例

スクリーンショットしたパソコンでの作業手順画像を、Photoshop上に次々と貼り付けていった後にそれらをjpgで出力するケースで使えます。レイヤーの数が多くなっていくとそれぞれのスクリーンショットのレイヤーをJPGとして出力すると大変なので、このスクリプトを使用することで、自動で出力されます。

仕様

Photoshopのアクティブドキュメントの「レイヤー 1」から「レイヤー n」までをPhoto_1.jpgからPhoto_n.jpgのファイル名で出力します。

アクティブドキュメントを開いた状態で、メニューバーの「ファイル」>「スクリプト」>「参照」でコードが書かれたファイルを指定することで実行できます。

出力されるファイルは画質最高12でアクティブドキュメントと同じフォルダに出力されます。

// ドキュメントが開かれているか確認
if (app.documents.length > 0) {
  var doc = app.activeDocument;

  // すべてのレイヤーを取得し、必要な形式の名前か確認
  for (var i = 0; i < doc.artLayers.length; i++) {
    var layer = doc.artLayers[i];

    // レイヤー名が "レイヤー " で始まり、数字が続く場合に処理
    if (layer.name.match(/^レイヤー (\d+)$/)) {
      var layerNumber = RegExp.$1; // 正規表現で取得した番号部分

      // レイヤーを表示
      layer.visible = true;

      // 他のレイヤーを非表示にして単独で表示
      for (var j = 0; j < doc.artLayers.length; j++) {
        if (i !== j) doc.artLayers[j].visible = false;
      }

      // ファイルの保存パスと名前を設定
      var filePath = File(doc.path + "/photo_" + layerNumber + ".jpg");

      // JPEG保存オプション設定
      var jpegOptions = new JPEGSaveOptions();
      jpegOptions.quality = 12; // 画質最高

      // 画像を保存
      doc.saveAs(filePath, jpegOptions, true, Extension.LOWERCASE);

      // 保存後にレイヤーを再度非表示にする
      layer.visible = false;
    }
  }

  // 全レイヤーを再表示
  for (var k = 0; k < doc.artLayers.length; k++) {
    doc.artLayers[k].visible = true;
  }

  alert("レイヤーを個別に保存しました。");
} else {
  alert("ドキュメントが開かれていません。");
}