省型旧形国電の残影を求めて

戦前型旧形国電および鉄道と変褪色フィルム写真を中心とした写真補正編集の話題を扱います。他のサイトでは得られない、筆者独自開発の写真補正ツールや補正技法についても情報提供しています。写真補正技法への質問はコメント欄へどうぞ

ART / RawTherapee ユーザコマンド機能マニュアル

f:id:yasuo_ssi:20210904211415j:plain

 ART にはユーザコマンドという簡単なプラグイン機能があります。ARTの設定保存ディレクトリに簡単な実行命令を書いたテキストファイルを置くことで、ARTのファイルブラウザ上で、コンテキストメニューからユーザが指定した外部実行ファイルを使った命令を実行することができます。以下、https://bitbucket.org/agriggio/art/wiki/Usercommands にあるマニュアルを翻訳して掲載します。

ユーザコマンド

 バージョン1.4以降、ARTは「ユーザコマンド」という簡単な形式のプラグインをサポートしています。これは単純な外部プログラムで、ファイルブラウザーコンテキストメニューからアクセス可能であり、現在選択されているファイルに対して実行されます。
 ユーザコマンドの便利な特徴は、コマンドがいつ有効になるかを決める、一定のファイル絞り込み基準を定義できることです。つまり、もし今選択されているファイルが、ユーザコマンドが有効になる基準にマッチしなければ、そのコマンドはメニューに現れません。この機能は、入力確認のための(単純ですがしかし便利な)様式を提供します。

どうやってユーザコマンドを定義するか

 ユーザコマンドは arp 現像設定ファイルと同じ文法の(但し拡張子は .txt です)単純なテキストファイルです。そして、ARTのconfigフォルダー (通常は、Linuxなら $HOME/.config/ART そしてWindowsの場合は %LOCALAPPDATA%\ART) の usercommands サブディレクトリーに置きます。そして、以下の仕様に従う必要があります。

・[ART UserCommand]という単一のグループオプションを含めます

・以下の必須オプションを含めます
 ◦ Label : コンテキストメニューに表示する文章

 ◦ Command : 実行するコマンド。パスは絶対パスでもカレントディレクトリに対する相対パスでも構いません。またコマンドには追加引数を含めることができます。入力ファイルは、その後さらに(引数として)追加されます。

・ユーザコマンドには、コマンドが有効になる基準を決めるために、次のオプション定義を含めることができます。

◦ Camera : 特定のカメラのみにコマンドを限定する正規表現で、カメラのモデル名を指定。もしこのオプションがなければすべてのカメラに有効(大文字・小文字を区別しない)。

◦ Extension : コマンドが有効になるファイル拡張子 (デフォルトはすべての拡張子に有効);

◦ FileType : raw か 非raw か 区別なし (区別なしがデフォルト);

◦ MinArgs : 引数の最低個数 (デフォルトは 1 );

※訳注: この場合の引数は、選択したファイル数と同じ意味になります。例えば MinArgs=2 と指定すると、ファイルブラウザ上で2つ以上のファイルを指定していないとユーザコマンドが有効にならない、ということになります。

◦ MaxArgs : 引数の最大個数 (デフォルトは無制限);

◦ NumArgs : 正確な引数の数;

◦ MatchCamera : もし true なら、すべての選択したファイルが同一のカメラモデルのファイルの場合のみコマンドを有効にする (デフォルトは false );

◦ MatchLens : 上と同様だが、それが同じレンズの場合のみ有効にする;

◦ MatchShutter : シャッタースピードにより有効にする;

◦ MatchISO : ISO値により有効にする;

◦ MatchAperture : 絞り値により有効にする;

◦ MatchFocalLen : 焦点距離により有効にする;

◦ MatchDimensions : 画像の大きさより有効にする

例:

 以下に、現在選択中のRawファイルに対しHugin (※訳注: Linuxで動くパノラマ、HDR画像作成アプリケーション) を起動するユーザコマンドの完全な例を示します。このスクリプトLinux で動き、hugin, ART-cli および zenityが $PATH にインストールされていることを前提にしています。

 まず、以下のユーザコマンド hugin-raw.txt を定義します。このファイルを $HOME/.config/ART/usercommands に置きます(もしこのディレクトリがなければ作成してください):

---------------------

[ART UserCommand]

# コマンドのラベル
Label=Hugin

# 実際に実行するコマンド (以下に定義)
Command=./hugin_raw.sh

# 少なくとも 2 つのファイルを合成
MinArgs=2

# raw ファイルに限定
FileType=raw

# 同じカメラの同じセッションのファイルに限定
MatchCamera=true
MatchLens=true
MatchShutter=true
MatchAperture=true
MatchFocalLen=true
# 他に以下のような追加基準が考えられる
# MatchISO=true
# MatchDimensions=true

-----------------
ユーザコマンドの定義は非常に単純です。この作業の実際は、同じディレクトリに共に置かれた hugin_raw.sh (以下の内容) によって実行されます。

-----------------

#!/bin/bash

# デフォルトの処理プロファイルとエラー情報を保存する
# 一時ディレクトリ作成
#
# ここで適切な広い色空間を使っているか確認
# というのは、合成後さらに編集を続けたいので
d=$(mktemp -d)
t=$d/p1.arp
cat <<EOF > $t
[Version]
Version=1015

[Color Management]
OutputProfile=RTv4_ACES-AP1
EOF

if [ -f "$1.arp" ]; then
    # もし最初に選んだファイルが現像設定ファイルならそのまま使う
    # (出力プロファイルを上書きする場合を除く 上記参照)
    cp "$1.arp" $d/p2.arp
    sidecar=("-p" "$d/p2.arp")
else
    # 最初のファイルが現像設定ファイルでないなら, デフォルト現像設定ファイルを作成 
    sidecar=()
    cat <<EOF >> $t
[Exposure]
HLRecovery=Blend

[ToneCurve]
Enabled=false

[LensProfile]
LcMode=lfauto
LCPFile=
UseDistortion=true
UseVignette=true
UseCA=false

[RAW]
CAEnabled=true
CA=true
CAAvoidColourshift=true
CAAutoIterations=2
EOF
fi

# rawファイルを ART-cli で現像, 進行ダイアログを追加 
# ユーザが分かるように
ART-cli --progress $fast "${sidecar[@]}" -p $t -Y -t -b16 -c "$@" 2>"$d/error" \
    | zenity --width=500 --progress --auto-close --text="Converting to TIFF..."

# ゼロでない終了ステータスは、ユーザによる操作のキャンセルを示す
if [ $? -ne 0 ]; then
    # もしそうなら、ちゃんと終了処理を行う
    exit 0
fi

# エラーがないかチェック
err=
if [ -f "$d/error" ]; then
    err=$(cat "$d/error")
fi

# 一時ディレクトリを削除
rm -rf $d

if [ "$err" != "" ]; then
    # 問題が生じたらエラーメッセージを表示
    zenity --error --text="$err"
else
    # 問題なければ, Huginに与える引数リストを準備
    # 注意: スペースやおかしな文字を含む wrt. ファイル名を
    # 正すためにbash配列を使う
    i=0
    for fn in "$@"; do
        tiffs[$i]="${fn%.*}.tif"
        i=$(expr $i + 1)
    done

    # 最後に hugin を実行する
    hugin "${tiffs[@]}" || zenity --error --text="Something went wrong..."
fi

---------------------

こちらもご覧ください。

yasuo-ssi.hatenablog.com