GIMP Python-fu 拡張①
~ 転写、クリッピングマスクの作成 ~
※ ここでの Python-fu は、GIMP2.8 以上を対象としています。Ubuntu ファミリーであれば少々古い OS でも PPA レジストリなどからインストール可能ですが、Python のバージョンなどには注意して下さい。インストール方法などは「PPA GIMP2.8」などでGoogle検索して下さい。
※ 動作の確認は、全て Fedora で行なっていますが、その他の Linux でも大差は無いと思われます。
※ Windows で利用する場合はまず、Python の動作確認をきちんと行なってからにして下さい。
ダウンロード
以下のリンクからダウンロードを行なって下さい。
スクリプトのダウンロード(GIMP 2.8 以降)
※ このスクリプトを使用して発生した問題に関し、作成者は如何なる保証などを行う事はありません。自己責任でのみの使用を許可します。
Python-fu の動作確認
GIMP 2.8 では Linux を含む多くのプラットフォームで Python-fu が利用可能になった。
まずは、GIMP を起動し、Python-fu コンソールを起動する。
メニュー『フィルター』>『Python-fu』>『コンソール』

上のようなウインドウが表示されたなら、「Python-fu」は利用可能だ。
※ GIMP2.8 の Python-fu では、Python 2.6 以上が必要です。(Python 2.7 推奨)
※ GIMP2.8 では、インストーラとして配布されているプラットフォームでは、Pythonが同梱されているそうです。「Python-fu」を利用する場合は。必ずインストールして下さい。
※ Linux / UNIX (Mac OSXを含む)環境では、通常、Python はインストールされていますが、 古い OS では、Python 2.6 以前などがインストールされている場合があります。
※ 「Python-fu」は、PyGTK を必要とします。これは、Python による GUI 操作をライブラリですが、Linux 環境ではシステム設定アプリケーションなどが Python で作成されているため、通常はインストールされています。また、その他のライブラリは通常、 PyGTK 内か GIMP2.8 自体に含まれています。
※ 最新の Linux では問題無い様ですが、OS環境によっては、環境変数を設定する必要がある場合があります。
Python-fu のインストール場所
メニュー『編集』>『設定』で「GIMP の設定」ダイアログを表示する。

『フォルダー』>『プラグイン』で、プラグインを格納するフォルダを指定する。Python-fu のスクリプトはこのフォルダにコピーすれば問題無い。
ただし、 Python-fu スクリプトを格納する場合、Linux/UNIX(Mac OSX を含む)では、必ず実行権を付与する必要があります。
インストールの例( Linux/UNIX の場合):端末を表示し以下のコマンドを発行
$ chmod +x スクリプトファイル名 #実行権の付与
$ mv スクリプトファイル名 ~/.gimp-2.8/plug-ins/ #スクリプトファイルの格納
※ Windows の場合は絶対にエンコードを変更してはならない。Python 自体にエンコード指定があり、通常 UTF-8 が指定されてあるからだ。
転写スクリプト
※ メニュー『レイヤー』>『レイヤー操作(Python-fu)』>『転写(Python)』に組み込まれます。
実はココでも紹介した通り、すでに転写スクリプトは存在する。 しかし登場時期の関係で、GIMP 2.8 から登場したレイヤーグループなどには未対応である。そこで今回の転写スクリプトは機能強化版だと思って下さい。レイヤーグループへの対応やレイヤーマスク、レイヤーモード、不透明度にも対応しています。
使い方を説明するついでに、転写の概念のからおさらいしましょう。
実際に描き込むレイヤーを「作業」レイヤー、転写先のレイヤーを「線画」レイヤーとする。この時、「作業」レイヤーと 「線画」レイヤーは隣接し、両レイヤーは通常レイヤーである必要があります。
また、エラーが発生した場合は、メッセージがウインドウ下部のステータスバーに表示されます。

例えば棒を握っている画像を作成する場合、線画の作成に苦労した人も多いのではないでしょうか。ここで、「作業」レイヤーで直線を引いたとします。

そして、線の赤い部分を消しゴムで削除して『転写』を行います。

さらに親指の部分も同様に行うと線画作成が簡単に行えます。「手前にあるモノからペン入れをしていく」と考えれば線画作業の順番が理解し易い。

この様に『転写』とは、 ペン入れを支援するツールの一種だと思って下さい。勿論、色塗りなどにも利用出来るので、その辺はアイデア次第。
また、 キーボードショートカットを設定しておくと便利です。
メニュー『編集』>『キーボードショートカット』でダイアログを表示し、「転写」と入力し、ショートカットを設定します。

『転写(Python)』を選択し、キーボードショートカットを設定します。(ここでは 「Ctrl+無変換」にショートカットを設定しています)
クリッピングマスク作成スクリプト
※ メニュー『レイヤー』>『レイヤー操作(Python-fu)』>『クリップマスク作成(Python)』に組み込まれます。
このスクリプトは、複数のレイヤーやグループレイヤーから、クリッピングマスク(レイヤーマスク)を作成する目的で使用します。
まずは、通常レイヤーを選択した状態で、メニューの『レイヤー』>『レイヤー操作(Python-fu)』>『クリップマスク作成』でダイアログを表示します。

各項目を簡単に説明します。
- 『レイヤーグループを再帰的に対象とする』 … レイヤーグループが入れ子構造になっている場合は、内包されているレイヤーグループも対象とします。
- 『アルファチャンネルを参照する』 … 収集対象となっているレイヤー(レイヤーグループ内のレイヤーを含む)の不透明部分を収集対象にします。
- 『レイヤーマスクを参照する』 … 収集対象となっているレイヤー(レイヤーグループ内のレイヤーを含む)のレイヤーマスクを適用します。
- 『レイヤーの表示・非表示を参照する』 … レイヤーの表示・非表示を参照します。つまり、非表示のレイヤーは収集対象に含みません。
- 『クリップ作成レイヤーのレイヤーマスクを参照する』 … 結果となるレイヤーにレイヤーマスクが設定されている場合は、AND演算が行われます。
- 『対象とする同階層下方のレイヤーグループ最大数』 … 収集対象のレイヤーグループの最大数を指定します。この時、カウントされるのは同階層のレイヤーグループのみになります。
- 『対象とするる同階層下方のレイヤー最大数』 … 収集対象のレイヤーの最大数を指定します。この時、カウントされるのは同階層のレイヤーのみになります。
※ 収集対象となるレイヤーのレイヤーモードは「標準」及び「ディザ合成」のみになります。「乗算」レイヤーなどは収集対象にはなりません。
※ 対象の最大数は同階層(例えばトップレベルのレイヤーグループを指定した場合、内在するレイヤーグループはカウント対象にはなりません)に対するモノです。例えば1つのレイヤーグループを参照した場合、レイヤーグループを内在する・しないに関わらず、1つと数えます。
使用例:
使用する画像

『対象とする同階層下方のレイヤーグループ最大数』に「1」、『対象とするる同階層下方のレイヤー最大数』に『0』を指定した場合。

『対象とする同階層下方のレイヤーグループ最大数』に「0」、『対象とするる同階層下方のレイヤー最大数』に『1』を指定した場合。

『対象とする同階層下方のレイヤーグループ最大数』に「1」、『対象とするる同階層下方のレイヤー最大数』に『1』を指定した場合。

注意)クリップマスク(レイヤーマスク)作成直後は、レイヤーマスクが選択状態になっています。

色を塗る場合は、左側の編集エリアをクリックして、白枠が移動するのを確認して下さい。
クリッピングマスクは、はみ出さずに色を塗りたい場合などを想定しています。陰影やハイライト処理にご利用下さい。


