省型旧型国電の残影を求めて

戦前型旧型国電および鉄道と変褪色フィルム写真を中心とした写真補正編集の話題を扱います。他のサイトでは得られない、筆者独自開発の写真補正ツールや補正技法についても情報提供しています。写真補正技法への質問はコメント欄へどうぞ

選択範囲を新規レイヤーに - GIMPを便利に! プロジェクト

f:id:yasuo_ssi:20210309093756j:plain 以前、黄変ネガ写真の補正術の説明GIMPPhotoshopと異なり調整レイヤー概念がなく、画像 (塗りつぶし) レイヤーしかないので、疑似非破壊画像編集法を考える必要があると述べました。で、その際、色域選択を使って選択した範囲を、新規レイヤーに貼り付けることで、色域選択した以外の領域が透明なレイヤーを作り、これを使って色調補正を行うことで、疑似非破壊画像編集が可能になると示しました。

 ただ、この作業がちょっと面倒です。なので選択範囲を、そのまま範囲以外が透明な新規レイヤーに転換するプラグインを作ろうと思いました。Photoshopなどでは、選択範囲をコピーして貼り付けると、デフォルトで新規レイヤーとして貼りつくようになっているので*1、いわばそれをGIMP上で実現しようというわけです。

 とはいえ、取得した選択範囲からどうやって画像データのコピーを取るのかか分からなくて手法をネットで検索していたところ、何とドイツの方で、既に同じプラグインを考えていた人がいました... (-_-;)

 そのままパクって、自分が作りましたというのはフェアではないのでこちらに紹介します。以下のリンクをクリックしてください。

@fre-sch

fre-sch/selection_to_layer_cropped.py

 ここにあるコードをテキストエディタ等にコピーして、改行コードをLFにして、GIMPプラグインフォルダに保存すると利用できます。GIMPのメニューの[フィルター]の下の方に、[Selection to Layer (Cropped)...] という名前で出てきます。

  で、このまま使っても良いのですが、やはり日本語になっていない点や、メニュー上での位置が気になります。そこでこのコードを日本語環境向けにアレンジする方法を指南します。

1)  まず、テキストエディタで保存するときに文字コードUTF-8 (+ 改行コード LF) で保存してください。

2) 1行目と2行目の間に日本語を使うために以下の行を挿入します。

# -*- coding: utf-8 -*-

これで日本語が使えます。

3) メニューの位置の変更と、表示を日本語にするために、26行目を以下のように書き換えます。

旧:

    "<Image>/Filters/Selection to Layer (cropped)...",

新:

    "<Image>/Layer/New/選択範囲を新規レイヤーに...",

 これで、メニューの[レイヤー]の下に表示されるようになります。もしメニューの[選択] の下に表示させるのがお好みなら /Layer/New/ を /Select/ に変えてみてください。

4) ダイアログの表示を日本語に変えるために、21行目と29行目を以下のように変えます。

旧:

21行目

"Create new layer from selection and auto crop layer",

29行目

(PF_STRING, "layer_name", "Name for new layer", ""),

 

新:

21行目

"選択範囲から新規レイヤー作成",

29行目

(PF_STRING, "layer_name", "新規レイヤー名", ""),

 

 以上のように書き換えることで、GIMPメニューの[レイヤー]の比較的上の方に、[選択範囲を新規レイヤーに...] という名前でこのプラグインがメニューに出てきて、ダイアログも日本語表示になります。

f:id:yasuo_ssi:20210228185735j:plain

プラグイン実行状況

----

 ところで fre-sch氏はこのコードをどのように書いているかというと、単純に現在アクティブなレイヤー (選択範囲情報が含まれている) を複製し、複製した新規レイヤーに対して、plug_in_autocrop_layer() という選択範囲以外を透明化するプロシジャーを適用しているようです。そんなのあったのか...

 私は、範囲選択関連のプロシジャーをあちこち調べてああでもない、こうでもないとやっていたのですが、範囲選択関連のプロシジャーを使うまでもなかったということでしたOLZ...

 あと、参考になったのは一時的にレイヤーのグループ化を無効化し、作業終了後グループ化を再度有効化している点です。

 

f:id:yasuo_ssi:20210309100200j:plain 

 

*1:GIMPはコピーした選択範囲を、既存のレイヤーに貼り付ける前提になっているので、その意味で一旦フローティング選択範囲になるのは合理的です。しかし、Photoshopのように、一旦別の新規レイヤーとして貼り付けて、必要に応じてその下のレイヤーと統合すればよい、という考え方もあるわけですし、そのほうが便利なケースも多々あります。