2017年5月11日木曜日

GIMP コマンドラインで (不具合かも?)

私、 GIMP を コマンドラインから操作した事がありませんでした。
対話的な GUI が 私の GIMP すべて です。
でも、 知っていても損はない!。
さぁ、 試して見ましょう。


と言う訳で。
GIMP 2.8 系のコマンドライン実行ファイルのヘルプです。  Windows での実行例です。.

CopyPaste 文字列: "%ProgramFiles%\GIMP 2\bin\gimp-console-2.8.exe" --help .
Microsoft Windows [Version 10.0.15063]
(c) 2017 Microsoft Corporation. All rights reserved.

C:¥WINDOWS¥system32>"%ProgramFiles%¥GIMP 2¥bin¥gimp-console-2.8.exe" --help
用法:
  gimp-console-2.8.exe [オプション...] [ファイル|URI...]

GIMP (GNU Image Manipulation Program)

ヘルプのオプション:
  -h, --help                          ヘルプのオプションを表示する
  --help-all                          ヘルプのオプションをすべて表示する
  --help-gegl                         Show GEGL Options

アプリケーションのオプション:
  -v, --version                       バージョン情報を表示して終了する
  --license                           ライセンス情報を表示して終了する
  --verbose                           詳細なメッセージを表示する
  -n, --new-instance                  新しい GIMP インスタンスを起動する
  -a, --as-new                        指定ファイルを新しい画像 (名称未設定) として開く
  -i, --no-interface                  ユーザーインターフェースなしで実行する
  -d, --no-data                       ブラシ、グラデーション、パターンなどを読み込まない
  -f, --no-fonts                      フォントを読み込まない
  -s, --no-splash                     起動時にスプラッシュを表示しない
  --no-shm                            GIMP とプラグインの間でメモリを共有しない
  --no-cpu-accel                      特別な CPU アクセラレーター機能を使用しない
  --session=<name>                    指定した sessionrc ファイルを使用する
  -g, --gimprc=<filename>             指定したユーザー gimprc ファイルを使用する
  --system-gimprc=<filename>          指定したシステム gimprc ファイルを使用する
  -b, --batch=<command>               実行させるバッチコマンドを指定 (複数回設定可能)
  --batch-interpreter=<proc>          バッチコマンドとともに起動するプロシージャーの指定
  -c, --console-messages              警告をコンソールに出力 (ダイアログに表示しない)
  --pdb-compat-mode=<mode>            PDB 互換モードの指定 (off|on|warn)
  --stack-trace-mode=<mode>           クラッシュ時のデバッグ対応の指定 (never|query|always)
  --debug-handlers                    致命的でないデバッグシグナルに対するハンドラーを有効にする
  --g-fatal-warnings                  すべての警告を致命的として扱う
  --dump-gimprc                       既定値の gimprc ファイルを出力する


C:¥WINDOWS¥system32>

標準インストール状態では、 %ProgramFiles%¥GIMP 2¥bin¥gimp-console-2.x.exe がその実行ファイルですね。
x は バージョン番号です。
%ProgramFiles% には 普通 C:¥Program Files が入ります。  環境変数なので そのまま 使って下さい。


公式ヘルプにも 同じ内容があります。   1.3. コマンドラインでの変数一覧  少し、解説付きになりますね。

   https://docs.gimp.org/ja/gimp-fire-up.html  (日本語ヘルプ)



さて、 何もせず、ただ、GIMP を起動して終了する 場合の コマンド の例です。
おや?。  何か、エラーメッセージの様なものが ... 。   (不具合かも?)

CopyPaste 文字列: "%ProgramFiles%\GIMP 2\bin\gimp-console-2.8.exe" -b "(gimp-quit 0)" .
Microsoft Windows [Version 10.0.15063]
(c) 2017 Microsoft Corporation. All rights reserved.

C:¥WINDOWS¥system32>"%ProgramFiles%¥gimp 2¥bin¥gimp-console-2.8.exe" -b "(gimp-quit 0)"

(gimp-console-2.8.exe:14232): LibGimpBase-WARNING **: gimp-console-2.8.exe: gimp_wire_read(): error

C:¥WINDOWS¥system32>

--verbose をオプションに付けて実行して見ました。

CopyPaste 文字列: "%ProgramFiles%\GIMP 2\bin\gimp-console-2.8.exe" --verbose -b "(gimp-quit 0)" .
Microsoft Windows [Version 10.0.15063]
(c) 2017 Microsoft Corporation. All rights reserved.

C:¥WINDOWS¥system32>"%ProgramFiles%¥gimp 2¥bin¥gimp-console-2.8.exe" --verbose -b "(gimp-quit 0)"
INIT: gimp_load_config
Parsing 'C:\Users\UserA\.gimp-2.8\unitrc'
Parsing 'C:\Program Files\gimp 2\etc\gimp\2.0\gimprc'
Parsing 'C:\Users\UserA\.gimp-2.8\gimprc'
gimp_composite: verbose=no
Processor instruction sets: +mmx +sse +sse2 -3dnow -altivec -vis
INIT: gimp_initialize
INIT: gimp_real_initialize
INIT: gimp_restore
Parsing 'C:\Users\UserA\.gimp-2.8\parasiterc'
Loading 'brush factory' data
Loading 'dynamics factory' data
Loading 'pattern factory' data
Loading 'palette factory' data
Loading 'gradient factory' data
Loading fonts
Parsing 'C:\Users\UserA\.gimp-2.8\templaterc'
INIT: gimp_real_restore
Parsing 'C:\Users\UserA\.gimp-2.8\pluginrc'
Querying plug-in: 'C:\Program Files\gimp 2\lib\gimp\2.0\plug-ins\pyconsole.py'


(gimp-console-2.8.exe:6596): LibGimpBase-WARNING **: gimp-console-2.8.exe: gimp_wire_read(): error
Writing 'C:\Users\UserA\.gimp-2.8\pluginrc'
Starting extension: 'extension-script-fu'
バッチインタープリターが指定されていません。既定のバッチインタープリター 'plug-in-script-fu-eval' を使用します。
EXIT: gimp_exit
EXIT: gimp_real_exit
Writing 'C:\Users\UserA\.gimp-2.8\templaterc'
Writing 'C:\Users\UserA\.gimp-2.8\parasiterc'
Writing 'C:\Users\UserA\.gimp-2.8\unitrc'
EXIT: app_exit_after_callback


C:¥WINDOWS¥system32>

あれっ?。
起動時に何かトラブっているのでしょうか?。
gimp_wire_read(): error と言うメッセージが返って来ています。

どうも、素人目には、Plug-In の初期設定処理に 躓いている 雰囲気 がありますが ... 。
$HOME/.gimp-2.8/pluginrc. は通常時の対話型での設定値がある筈なので、 その辺りでしょうか?。

でも、実際に、何か、画像編集の実行コマンドを 終了処理の前に 挿入して 動かして見ると、
次の行に、 (--verbose 付きでは、'plug-in-script-fu-eval' を使用します の次の行に)、
batch command executed successfully と表示され、 結果に問題は無さそうです。
Plug-In がコケている(失敗している)様子は見られませんでした。.

果たして、これが、  エラーだから表示されているのか? 表示書式でエラーが無くても表示されているのか? 不明です。
盛んに、 Internet 検索したのですが、 結局、判明しませんでした。

     もし、ご存知の方がいらっしゃたら、コメント戴ければ幸いです。

     I want you to help. Please.  (On OS Windows, GIMP Console Executable shows the Error Message. Why? ) .
     Is it BUG?. *2.

     OS version Windows 10 version 1703  /  GIMP version 2.8.20 (for Win.) . *1.




話は変わって。
コマンドプロンプト上での 留意点 もあります。

文字列の長さは 8191 文字以内!。

   コマンド プロンプト (Cmd.exe) へ 8192 文字以上の引数を渡した場合に発生する現象
   https://support.microsoft.com/ja-jp/help/2823587

画像処理をしていると、兎角、フォルダ構造が深くなり易いですし、ファイル名も長くなり勝ち!。
おまけに、 今回の様に、 GUI でなく CUI (コマンドライン)を使おう なんて考えは、
複数のファイルを扱う 自動処理 目的 が多いと思います。

実は、 こんな落とし穴が潜んでいますので、
闇雲に、長~い  コマンド を書いたりしていると、危ない ですよ。
特に、 プログラムやバッチで、複数のファイルを流し込む時は要注意ですね。



[2017/05/12] 不具合に関して version 明記 *1.
[2017/05/15] BUG の文字を本文に挿入 *2.

0 件のコメント:

コメントを投稿