2019年2月22日金曜日

GIMP Script-Py (5) 基本的なもの一例

どうしても、GIMP の Python でスクリプトを書く場合、
複雑なものに なり勝ち です。  私の場合。
ですから、 簡単な例 を、これ迄、示せずに来ましたが、
打って付け のものが出来ました!。


さて、
GNOME の gitlab に、こんな GIMP への 提案を見付けました。
Isolate Layer 、'Krita' での機能を GIMP でも追加して! と言う内容でしょうか?。

It's frequently convenient to view or work on a single layer's original image.
Currently in GIMP, SHIFT-CLICK on a layer's "visibility icon" will make only that layer visible, however this has some drawbacks if the purpose is to temporarily view the isolated layer...

If the layer has a blend mode or opacity applied, it may be necessary to change those settings to view and edit the image on that layer, and then restore them manually again after editing/viewing.

A second SHIFT-CLICK makes ALL the layers visible, even if they were not visible before
, requiring manual adjustments to restore the layer stack to its previous visibility settings.

Google 翻訳

単一レイヤーの元の画像を表示したり作業したりすると便利なことがよくあります。
現在のGIMPでは、レイヤーの「表示アイコン」をSHIFT-CLICKするとそのレイヤーだけが表示されますが、孤立したレイヤーを一時的に表示することを目的としている場合、これにはいくつかの欠点があります。

レイヤーにブレンドモードまたは不透明度が適用されている場合は、そのレイヤーの画像を表示および編集するためにこれらの設定を変更し、編集/表示後に手動でそれらを再度復元する必要があります。

2回目のShiftキーを押しながらクリックすると、以前に表示されていなくても、すべてのレイヤーが表示されます。
レイヤースタックを以前の表示設定に戻すために手動で調整する必要があります。


ならば、スクリプトを書いたら、 と言う発想から、
以下のものを提案しました。

  ファイルのリンク URL   on GitLab.GNOME  Download も可

   Shiro_copy_paste_layer_basic_setting.py

  ファイルの内容
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from gimpfu import *

# Procedure
#1 Rev.1 2019/02/21
def plugin_main(image, drawable):
  # Main Routine
  ## Write here your code... Carefully, Indent!
  if pdb.gimp_item_is_group(drawable):
    return
  image.undo_group_start()
  #1 #parent = pdb.gimp_item_get_parent(drawable)
  #1 #position = -1
  parent = None
  position = 0
  lyr1 = pdb.gimp_layer_copy(drawable, TRUE)
  pdb.gimp_layer_set_opacity(lyr1, 100)
  pdb.gimp_layer_set_mode(lyr1, LAYER_MODE_NORMAL)
  #1 Insert 1 Line
  pdb.gimp_item_set_visible(lyr1, TRUE)
  pdb.gimp_image_insert_layer(image, lyr1, parent, position)
  image.undo_group_end()
  gimp.displays_flush()

# Registration
register(
        "python_fu_copy_layer_basic_setting",    # func name
        "Copy and Paste Layer by Basic Setting", # description
        "Copy and Paste Layer by Basic Setting", # help
        "ShiroYuki_Mot",                         # author
        "(c) 2019- ShiroYuki_Mot",               # copyright notice
        "2019/02/18",                            # date created
        "<Image>/Edit/Copy-Paste Layer by Basic Setting",
                                                 # menu name
        "RGB*, Gray*",                 # image types on the script
                                                 # params
        [],  
        [],                                      # results
        plugin_main                              # function
        )
main()

内容的には、現在のレイヤーをコピーして、新たなレイヤーを生成し、
そのレイヤーモードと不透明度を標準的なものに変更する ものです。
  つまり、標準的なレイヤーでは、実行する意味が無く、
  不透明度を下げたり、レイヤーモードを特殊なものにしていたり、
  特殊で複雑なケースの画像にこそ効力を発揮する事になります。
レイヤー名は  現在のレイヤー に #1 が追加される事になります。  (#n が振られていない場合)
メニュー > 編集(E) の 最下位 に項目が新設されます。 
履歴や キーボードの Ctrl + Z から、取り消し も可能ですね。
グループレイヤーに対しては、処理をせずに、そのまま返す 形にしています。
ソースコード #1 の修正版で、レイヤー生成位置を最上位にすると共に、
不可視属性のレイヤーに対しそのコピーを可視化しました。 *1.

   現行 GIMP 2.10.8 では gimpshelf.py を最新版に更新する事が必須です。
   既投稿 GIMP 2.10.8 Python GroupLayer Trouble を参照。


これは、極、基本的なスクリプトでしょうから、
参考になると思い、この投稿にも掲載する事にしました。



[2019/02/22] 修正版の件を追記 *1.

0 件のコメント:

コメントを投稿