mieki256's diary



2026/04/06(月) [n年前の日記]

#1 [gmic] G'MICのフィルタの作り方を勉強中。その7

G'MIC用のフィルタを作ってみたい。作り方について勉強中。

環境は Windows11 x64 25H2 + GIMP 2.10.38 Portable + G'MIC-Qtプラグイン 3.7.4。

入力画像を複製したい :

入力画像([0] と指定)を何枚か複製して画像ストックに入れたい。どう記述すればいいのだろう?

色々な書き方ができそう。

# ループを回して複製。[0] を新規の入力画像として指定する
cnt=3
repeat $cnt
  input [0]
done

# input は省略することができる
cnt=3
repeat $cnt
  [0]
done

# 画像スタックの最後の画像 [-1] を指定しても良さそう
cnt=3
repeat $cnt
  [-1]
done

# [-1] は「.」というショートカットがある
cnt=3
repeat $cnt
  .
done

# そもそも「x」を使えば指定した数だけ複製できる
cnt=3
[0]x{$cnt}

# [-1] のショートカット「.」でもいい
cnt=3
.x{$cnt}

一番最後はめっちゃ短くなったけど…。こんなのが書かれていても何をやってるのか分からないよなあ…。

ピリオドについて :

画像スタックの一番最後、あるいは最後から2番目、3番目の画像を指定する時は、[-1] や [-2] や [-3] と指定する。この、 [-1]、[-2]、[-3] には、省略形として「.」「..」「...」が割り当てられている。

_Command Decorations


この仕様について、ちょっともやもやと考えてしまった。

この省略形について知った時、「.」とか「..」なんてのがスクリプトソースの中にいきなり出てきても初見じゃさっぱり意味不明じゃんよこんなのわかるわけねえと若干憤慨(?)してしまったものの、考えてみたらLinuxにしろWindowsにしろカレントディレクトリは「./」「.\」、親ディレクトリは「../」「..\」と示すわけで、それらを導入してこうなったのでは? と思えてきた。

また、「画像スタックの一番最後の画像がカレント画像 ―― 処理対象画像として扱われる場面が多いよね? だから特別にこういうショートカットを用意してみたよ」ということでもあるのだろう…。

しかし…。こんな記述を導入してたら一気にソースが難解になるよなあ…。そうまでして打鍵数/文字数を減らしたいんかい…。結果、何をやろうとしてるのかよく分からんスクリプトだらけになるし、今後各スクリプトをメンテナンスしていく際の負担も増大する。何より、パッと見て「これならなんとなく分かりそう」と思わせることができない記述ばかりでは、初心者(?)に対して一見さんお断り状態になってツールの普及も全然進まないだろう…。

とは言え、「じゃあカレント画像を指定する際の適切な省略形として一体何がいいのですか?」と問われたらかなり悩んでしまう。やはり何かの記号で表現したくなりそうだけど、すると途端に分かりづらくなる…。そう考えると、「ディレクトリの相対パス指定と同じです」と言える「.」「..」は分かりやすいほうでは? とすら思えてくる…。

プログラミング言語/スクリプトの仕様を考えるのって難しいものだなと。だからこれだけ色んな言語が溢れかえっているのだろうけど。

何にせよ、G'MICスクリプトってなんだかあちこち分かりづらい…。TyepScriptからJavaScriptに変換、みたいなノリで、一旦分かりやすい言語で書いてからG'MICスクリプトに変換できないものかな…。

以上です。

過去ログ表示

Prev - 2026/04 -
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project