アマチュアアニメーションを安く制作するのをひっそり応援するページ


★ ★ ★

フォトショップとか、高けーんだよ!
って思うので、フリーウェアの導入を考えてみる。
ノーパソとかに、何の気兼ねなく入れられるので、
なんと出張先でも色が塗れる!

★ ★ ★

ということで、GIMPを導入レポートです。
GIMP は、GNU Image Manipulation Program の頭文字をとった名前で、頭にGNUがくっついています。GNUは、大雑把には何でもかんでもオープンソース、フリーで作っちまおうっていう概念です。つまり、フリー、只、ロハ。すげーぜ。


■ 登録しなきゃ

さて、命令の一群に名前を与えて定義して、GIMPが読み込めるようにしなくちゃいけない。

Script-Fuで定義できる命令には、ある画像に対してある命令(この画像のゴミ取りをするとか言う場合)と、特定の画像を対象にしない命令(今開いている画像全部にある処理をするとか)の2通りがあるそうな。

まずは、ある画像に対して行う命令を定義する方法を試すことにしよう。
例として、青で塗った部分を、自動で透明にする Script-Fu を作ることにする。いわゆる、ブルーバックって奴だ。

まずは次のように書いたスクリプトを作って、GIMP が Script-Fu を読みに行く場所に usrdef-cut-blue.scm というファイルを置いてみよう。

(define (script-fu-cut-blue img layer)   ; 関数を定義
  ()                                     ; ここにやることを入れる
  )

(script-fu-register                      ; 登録する
 "script-fu-cut-blue"                    ; 登録する関数の名前
 "<Image>/Script-Fu/USRDEF/Cut Blue..."  ; メニューの場所
 "usrdef-cut-blue.scm\nCut blue (0 0 255) region"
 "Q@studio pot-pourri"                   ; 作者
 "(c) 2006"                              ; 著作権情報
 "ver. 1.0 2006/3/28"                    ; 日付
 "RGB*"                                  ; このコマンドが使えるモード
 SF-IMAGE     "Image"     0
 SF-DRAWABLE  "Drawable"  0)

僕の環境下では、これを
C:\Program Files\GIMP-2.2\share\gimp\2.0\scripts\usrdef-cut-blue.scm
というファイルにして置くことになる。

で、GIMPを再立ち上げするか、Script-Fuの再読み込みを実行すると、ちゃんとメニューの中に、新しいコマンドができた!



Script-Fu コンソールの参照ダイヤログの中にも、解説がちゃんと入っている!



■ 処理の中身を作らなきゃ

でも、この状態のままでは、やることを定義する部分が空なので、実行しても何も起こらない。

では、実際に、青い部分を透明にする処理を入れてみると…

(define (script-fu-cut-blue img layer)   ; 関数を定義
  ; 前準備
  (gimp-image-undo-group-start img)      ; ここから先の操作をundo一回で戻れるようにする

  ; メイン
  (gimp-layer-add-alpha layer)           ; αチャンネルを(無ければ)付加
  (gimp-by-color-select layer '(0 0 255) 0 2 FALSE 0 0 0) ; 青を選択
  (gimp-edit-cut layer)                  ; 選択範囲をカット
  (gimp-file-save 1 img layer 
		  (car (gimp-image-get-filename img))
		  (car (gimp-image-get-name img))) ; 保存

  ; 後始末
  (gimp-image-undo-group-end img)        ; ここまでの操作をundo一回で戻れるようにする
  (gimp-displays-flush)                  ; 更新された情報を表示
  )

(script-fu-register                      ; 登録する
 "script-fu-cut-blue"                    ; 登録する関数の名前
 "<Image>/Script-Fu/USRDEF/Cut Blue..."  ; メニューの場所
 "usrdef-cut-blue.scm\nCut blue (0 0 255) region"
 "Q@studio pot-pourri"                   ; 作者
 "(c) 2006"                              ; 著作権情報
 "ver. 1.0 2006/3/28"                    ; 日付
 "RGB*"                                  ; このコマンドが使えるモード
 SF-IMAGE     "Image"     0
 SF-DRAWABLE  "Drawable"  0)

これで、青い部分を透明にして保存する処理が、クリックひとつでできるようになった!


(あちゃぁ、画像を流用しているから、画像IDが…。本当にワンクリックでできたんだってば(汗))


■ ショートカットも割り当てられる

うれしいことに、ショートカットも割り当てられるので、本当にワンタッチで複雑な処理をさせることも可能だぞ。



■ 折角なので、もう1個作る

折角なので、ワンドで選んだ領域のゴミを取りながら着色するスクリプトも作ってみた。
選択範囲を拡大して縮小する有名なテクニックだ。
上の青抜きと、このゴミ取り着色は、自分がフォトショでの利用頻度No.2からNo.3のマクロのGIMP版だ。

(define (script-fu-paint-removing-trash img layer)   ; 関数を定義
  ; 前準備
  (gimp-image-undo-group-start img)      ; ここから先の操作をundo一回で戻れるようにする
  
  ; メイン
  (if (!= (gimp-selection-is-empty) 0)   ; 選択範囲が0でなければ
      (gimp-edit-bucket-fill layer 0 0 100 0 0 0 0) ; 塗る
      (gimp-selection-grow img 1)        ; 選択範囲を拡大
      (gimp-selection-shrink img 1)      ; 選択範囲を縮小
      (gimp-edit-bucket-fill layer 0 0 100 0 0 0 0) ; も一度塗る
      (gimp-selection-none img) )        ; 選択範囲を解除
  
  ; 後始末
  (gimp-image-undo-group-end img)        ; ここまでの操作をundo一回で戻れるようにする
  (gimp-displays-flush)                  ; 更新された情報を表示
  )

(script-fu-register                      ; 登録する
 "script-fu-paint-removing-trash"        ; 登録する関数の名前
 "<Image>/Script-Fu/USRDEF/Paint removing trash..."  ; メニューの場所
 "usrdef-paint-removing-trash.scm\nPaint selected region, removing small dots"
 "Q@studio pot-pourri"                   ; 作者
 "(c) 2006"                              ; 著作権情報
 "ver. 1.0 2006/3/29"                    ; 日付
 "RGB*"                                  ; このコマンドが使えるモード
 SF-IMAGE     "Image"     0
 SF-DRAWABLE  "Drawable"  0)

ゴミだらけの画像も、ゴミごと適当にワンド選択してスクリプトを実行すれば…

はいっ、御覧のとおり!
(但し、形状にも拠る。
この手法だと髪の毛の先とかがつぶれてしまうのは周知の事実…)


⇒ 串刺し塗りスクリプトに続く

戻る