Adobe PhotoshopでチャンネルごとにTIFFファイルを保存する


はじめに

Photoshopで、psdファイルをチャンネル単位に個別のグレースケールTIFFファイルに保存する、JavaScriptを作りました。

作るに至った経緯を少々。
MKの紙面印刷用データを作る過程で、CMYKからMKに変換したという画像データを支給され、それを取り込んで紙面データを作成して後工程に渡しました。すると、画像データにYが残っていたとのことで紙面データが後工程から戻されてきました。
変換後の画像データに不要色が残っていないかチェックできればこのようなことは起きないわけで、ではチェックツールを作ればよいと。

もちろん、TIFFファイルにドットが載っているかどうかチェックできなければ無意味です。このチェック方法については別途投稿します。

なお、ここではPhotshopでのJavaScriptの動かし方については触れていません。

どう動くのか

  • ひとつのフォルダ内の複数のpsdファイルを同時に処理できます。
  • スクリプトを起動すると、フォルダ選択ダイアログが開きます。このダイアログでpsdファイルを収めたフォルダを指定してやります。
  • psdファイルと同ディレクトリに、「psdファイル名_separated」というフォルダが作成され、その中にチャンネル単位のTIFFファイルが保存されます。

1.Photoshopで見たpsdファイルとチャンネル

2.psdファイルを収めたフォルダ。これを処理する

3.処理後のフォルダ。psdファイルに対応して「psdファイル名__separated」ができている

4.「psdファイル名 __separated」のなか。

コード

anynameok.jsx
//フォルダチューザを開き、フォルダを取得
var folderObj = Folder.selectDialog("処理したいファイルを収めたフォルダを選択してください");

//フォルダを取得したら、フォルダ内のpsdファイルをリストで取得
if (folderObj) {
  var fileList = folderObj.getFiles('*.psd');
  var fileCount = fileList.length;
    //psdファイルひとつひとつを関数processで処理
  for (var i = 0; i < fileCount; i++) {
        process(fileList[i]);
  };
    alert("処理が終わりました");
} else{
    alert("キャンセルされました");
};

//psdファイルをチャンネル単位で保存する関数
function process(targetFile) {
  //Photoshopでファイルを開く。開かれたファイルはそのままアクティブドキュメントに。
  open(targetFile);
  //アクティブドキュメントのパス(親ディレクトリ)を取得
  var activeDocPath = activeDocument.path;
  //分離後のファイル保存時にサブフォルダを挟むため、そのサブフォルダの命名取得用に拡張子抜きのファイル名を取得しておく
  var fileNameWithoutExt = activeDocument.name.substr(0, activeDocument.name.indexOf('.'));
  //出力先フォルダの作成
  var outFolder = new Folder(activeDocPath + '/' + fileNameWithoutExt + '_separated');
  if (!outFolder.exists) {
    outFolder.create()
  };
  //チャンネル分割のため、画像を統合
  activeDocument.flatten();
  //チャンネル毎にドキュメントを分割。この際、元ファイルは未保存で閉じられ、チャンネル毎のドキュメントのみが未保存で開かれている
  activeDocument.splitChannels();
  //開かれているドキュメントの数すなわち元ファイルのチャンネルの数
  var docCount = documents.length;
  //各ドキュメントを保存し、閉じる
  for (j = 0; j < docCount; j++) {
    var fileObj = new File(outFolder + '/' + activeDocument.name);
    var tiffOpt = new TiffSaveOptions();
    //ここに適宜TIFF保存時のオプションを記述
    activeDocument.saveAs(fileObj, tiffOpt, false, Extension.LOWERCASE);
    activeDocument.close();
  };
};

TIFF保存時の設定については以下が詳しいです。
http://nakatoji.lolipop.jp/index.php?option=com_content&view=article&id=401&catid=30