mieki256's diary



2014/02/04(火) [n年前の日記]

#1 [cg_tools] GIMPで全レイヤーに○○をするスクリプト

GIMPで、全レイヤーにレイヤーマスクをつけて、それを適用していく作業をしてたのだけど。ちょっと面倒臭いなと。手作業でやってられないよなと。Script-fuで自動化できないのかなと。

レイヤーマスクを1回コピーするスクリプトは、以下のページが見つかった。

_GIMP Script-fu: sg-copy-mask-from-above

1つ上のレイヤーから、レイヤーマスクをコピーできるスクリプト、らしい。導入後、レイヤーリスト?上で右クリックすると、「Copy Layer Mask From Above」という項目が増えてるので、それを選べばコピーできる。ただ、全レイヤーに対して一括してやってくれるわけではないので、やっぱり面倒臭い。でもまあ、手作業でコピーしていくよりは楽かなと。

全レイヤーのレイヤーマスクを適用する処理については、以下のページのスクリプトが参考になった。

_Script-Fu: すべてのレイヤーに対する処理(よく使うもの)を簡単に呼び出せるようにした | anobota

anbt-proc-for-all-layers:proc-list に、以下を定義。
(define anbt-proc-for-all-layers:proc-list
  '(
    ("不透明度を100に"
     . (lambda (img layer) (gimp-layer-set-opacity layer 100)))
    ("階調の反転"
     . (lambda (img layer) (gimp-invert layer)))
    ("アルファチャンネルを削除"
     . (lambda (img layer) (gimp-layer-flatten layer)))
    ("アルファチャンネルを追加"
     . (lambda (img layer) (gimp-layer-add-alpha layer)))
    ("レイヤーモードを「乗算」に"
     . (lambda (img layer) (gimp-layer-set-mode layer MULTIPLY-MODE)))
    ("レイヤーをキャンバスに合わせる"
     . (lambda (img layer) (gimp-layer-resize-to-image-size layer)))
    ("レイヤーマスクを適用"
     . (lambda (img layer) (gimp-image-remove-layer-mask img layer 0)))
    ("レイヤーマスクを削除"
     . (lambda (img layer) (gimp-image-remove-layer-mask img layer 1)))
    ))
全レイヤーに対して、レイヤーマスクを適用、及び、レイヤーマスクを削除ができるようになった。

ただ、このスクリプトが、GIMP 2.8以降で追加されたレイヤーグループに対してどう働くのかは不明。まあ、レイヤーグループ内のレイヤーを取得する処理って、地味に面倒臭いので、たぶんそこまでは対応してないんじゃないかと予想しますが。

GIMP 2.6 と GIMP 2.8 って、レイヤーグループ云々のあたり、互換性が無いんですよね…。双方の違いを吸収する関数でも作ってしまえばいいのかもしれないけど…。

以上です。

過去ログ表示

Prev - 2014/02 - Next
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

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project