Lightroomの書き出し後処理でNode.jsを使う方法やshebang の書き方について
Lightroomの出力設定である「書き出し設定」では、画像透かし処理やリサイズなどの設定を行う事ができます。ただ、この項目で設定できる範囲外のことを行おうとすると、なかなか自由度が少ないのがデメリットです。
そこで、今回はLightroomからNode.jsを使って、独自の処理を行う手順を調べてみました。手順は簡単にまとめると次の通りです。
- コードを書く
- コード先頭にシェバンを書く
- LightroomのExport Actionフォルダーにコピー
- スクリプトのパーミッションを変更
- Lightroomの書き出し設定でスクリプトを選択
- Lightroomから画像書き出し、スクリプトを実行させる
当記事では、上記2〜5の手順を詳しく見ていきたいと思います。
目次
LightroomからNode.jsを使うにはシェバンを理解する
ライトルームからNode.jsなどのスクリプトを実行するには、プログラムをインタープリターで呼び出す必要があるようです。その具体的方法としては、プログラムにシェバン(shebang)を一行目に記述します。
シェバンは実行するプログラムの場所を示す#!
で始まるファイルパスの事です。
例えば、今回のようにnode.jsを使う場合には$ which node
コマンドで、nodeのファイルパスを予め調べておきます。
1 | $ which node |
続いて、下記のようにwhich
コマンドで取得したパスをnode.jsのコードの一行目に、記述していきます。
1 | #!/Users/****/.nvm/versions/node/v4.3.0/bin/node |
なお注意点になりますが、Lightroomからは#!/usr/bin/env node
という指定ができないので、nodeのパスを直接記述する必要があるようです。
Export Actionにコピーする
上記のコードが記述できたら、LightoomのExport Actionフォルダーにコピーします。
1 | ~/Library/Application Support/Adobe/Lightroom/Export Actions |
スクリプトの実行権限(パーミッション)を変更する
続いて、コピーしたnode.jsのファイルのパーミッションを変更します。パーミッションの変更にはchmod
コマンドを使います。
1 | $ cd ~/Library/Application Support/Adobe/Lightroom/Export Actions |
パーミッションの変更後、index.js
を実行して結果が表示されれば準備完了です。
Lightroomの書き出しでindex.jsを設定
最後に、Lightroomの書き出し設定 > 後処理
(Ctrl+Shift+E)の書き出し後
ダイアログで作成したindex.jsを選択しておきます。
これで、Lightroomの画像書き出し後に、node.jsが処理されます。
Lightroomから渡ってきたファイルを取得する
Lightroomから渡ってきた画像のファイルパスを取得するには、process.argv
を使います。
以下のコードでは、Lightroomから渡ってきたファイルパスをデスクトップに書き出す処理の例です。
1 | #!/Users/****/.nvm/versions/node/v4.3.0/bin/node |
このようなコードを応用して、画像処理などをされてみてはいかがでしょうか? ただ、Lightroomからshebangを呼び出す際、様々な制約があるのでMac OSXユーザーならばAutomatorから呼び出す方法のが良いかもしれないと思いました。
参考記事
下記の記事を参考にさせていただきました。
Lightroomからnode.jsを使う方法が解説されている
iTest (サイテスト) ブログ
CLIに目覚めた!Node.jsで作るコマンドラインツール
Node.jsのシェバン指定方法や権限変更方法、スクリプトとして実行する方法が解説されている