ChatGPTに、無料の画像編集ソフト「GIMP」のプラグインを作ってもらいました。
ChatGPT
まず、ChatGPTにGIMPのプラグインが作れるか聞いてみました。
gimp用のスクリプトを作れますか?
すると、すぐに明るさとコントラストを変更するスクリプトを書いて、使い方も説明してくれました。
もちろんです。GIMPはスクリプトで自動化できる多くのタスクをサポートしています。GIMPスクリプトはPythonやSchemeといった言語で書くことができます。
まずは、Pythonを使用した単純なGIMPスクリプトの例を示します。このスクリプトは、開いているすべての画像の明るさとコントラストを調整します。
from gimpfu import *
def adjust_brightness_contrast(image, drawable, brightness, contrast):
for layer in image.layers:
pdb.gimp_brightness_contrast(layer, brightness, contrast)
register(
"python_fu_adjust_brightness_contrast",
"Adjust brightness and contrast for all layers in the image",
"Adjust brightness and contrast for all layers in the image",
"Your Name",
"Your Name",
"2023",
"/Filters/Adjust brightness and contrast...",
"*",
[
(PF_SLIDER, "brightness", "Brightness level", 0, (-100, 100, 1)),
(PF_SLIDER, "contrast", "Contrast level", 0, (-100, 100, 1)),
],
[],
adjust_brightness_contrast)
main()
このスクリプトは、全ての開いている画像の明るさとコントラストを調整する機能をGIMPに追加します。新しいフィルタオプション “Adjust brightness and contrast…” が画像メニューの “Filters” サブメニューに追加されます。明るさとコントラストのレベルはスライダーで調整できます。
スクリプトをGIMPで使うには、まずこのスクリプトを .py ファイルとして保存し、その後GIMPのプラグインディレクトリに置いてください。次にGIMPを再起動すると、新しいフィルタが追加されます。
スクリプトが正しく動作しない場合、または他の機能を追加したい場合は、どんな問題が起きているかまたは何をしたいのかを詳しく教えてください。その上で、適切なアドバイスやスクリプトの修正を行うことができます。
はじめは一つの画像の選択中のレイヤーの明るさとコントラストだけが変更されたので一度だけスクリプトを修正しました。
すみません、その表現は混乱を招く可能性があるようです。ここでの「全ての開いている画像」という表現は、選択された特定の画像内の全てのレイヤーを指しています。つまり、スクリプトは選択された画像内の全てのレイヤーに対して明るさとコントラストの調整を行います。
GIMPのプラグインの場所
スクリプトの保存場所を調べるには、GIMPを開き、編集 > 設定 をクリックします。
左のメニューの「フォルダー」を開き、プラグインをクリックします。右側にフォルダの一覧が表示されるので、パスを選んで右のアイコンからファイルマネージャーで表示します。
このフォルダにメモ帳などを新規作成し、上のスクリプトをコピペします。名前を付けて、拡張子を.pyに変更します。
使い方
GIMPを再起動すると、プラグインが使えるようになります。まずレイヤーを2つ作りました。
「フィルター」メニューの中に「Adjust brightness and contrast…」という項目が追加されています。
クリックすると、明るさとコントラストを変更できるウィンドウが表示されるので、明るさを下げて「OK」を押します。
両方のレイヤーの明るさが変更されました。
これで、ChatGPTを使って素早くGIMPのプラグインが作れました。
ChatGPTによる解説
最後に、ChatGPTにスクリプトを詳しく説明してもらい、このブログの記事に似せて書き直してもらいました。以下は、ChatGPTによるスクリプトの解説です。
もちろんです、指定されたスタイルに従って、GIMPスクリプトの説明を再構成します。
GIMPにカスタムスクリプトを追加する
今回の目標は、GIMPにカスタムスクリプトを作成し、それを利用して画像内のすべてのレイヤーの明るさとコントラストを調整することです。このスクリプトはPythonを用いて作成し、GIMPのgimpfuモジュールを通じて画像操作を実行します。
まず、Pythonスクリプトを新規作成し、gimpfuモジュールをインポートします。このモジュールはGIMPとPythonを結びつけるためのもので、GIMPの関数をPythonから利用することができます。
from gimpfu import *
次に、明るさとコントラストを調整するための関数を定義します。この関数は4つのパラメーターを持ちます:image(操作する画像)、drawable(操作するレイヤー)、brightness(明るさの調整値)、contrast(コントラストの調整値)。
def adjust_brightness_contrast(image, drawable, brightness, contrast):
関数内部で、画像内のすべてのレイヤーを反復処理します。image.layersは画像内のすべてのレイヤーを表しています。
for layer in image.layers:
各レイヤーに対して、GIMPのgimp_brightness_contrast関数を使用して明るさとコントラストを調整します。この関数は、第1引数としてレイヤー(layer)、第2引数として明るさの調整値(brightness)、第3引数としてコントラストの調整値(contrast)を必要とします。
pdb.gimp_brightness_contrast(layer, brightness, contrast)
次に、このスクリプトをGIMPに登録するためのregister関数を呼び出します。この関数はスクリプトのメタデータを定義し、GIMPにスクリプトの存在を知らせます。
register(
register関数の第1引数は、スクリプトの内部名です。これは他のスクリプトと区別するためのもので、通常は “python_fu_” を接頭辞にした名前を使います。
"python_fu_adjust_brightness_contrast",
次の3つの引数はスクリプトの説明、作者の名前、著作権情報を示します。
```python
"Adjust brightness and contrast for all layers in the image",
"Your Name",
"Your Name",
```
スクリプトの作成年を示します。
```python
"2023",
```
次に、スクリプトがGIMP内でどのようにアクセスされるかを示すメニューパスを定義します。この例では、画像メニューの “Filters” サブメニューに新しい項目 “Adjust brightness and contrast…” が追加されます。
```python
"/Filters/Adjust brightness and contrast...",
```
次に、スクリプトが対応している画像タイプを示します。アスタリスク (*) は、すべての画像タイプに対応することを意味します。
```python
"*",
```
その後、スクリプトのパラメータを定義します。今回は2つのスライダーを作成します:1つは明るさのレベルを調整し、もう1つはコントラストのレベルを調整します。PF_SLIDERはパラメータタイプを示し、第2引数はパラメータ名、第3引数はパラメータの説明、第4引数はデフォルト値、第5引数は(最小値、最大値、ステップサイズ)のタプルです。
```python
[ (PF_SLIDER, "brightness", "Brightness level", 0, (-100, 100, 1)), (PF_SLIDER, "contrast", "Contrast level", 0, (-100, 100, 1)), ],
```
このスクリプトは出力を生成しないため、出力タイプのリストは空です。
```python
[],
```
最後に、スクリプトが実行する関数(adjust_brightness_contrast)を登録します。
```python
adjust_brightness_contrast)
```
register関数の終了部分です。
```python
)
```
main関数を呼び出して、スクリプトの登録を完了します。これでスクリプトは実行可能な状態になります。
```python
main()
```
以上がスクリプトの説明となります。このスクリプトを .py ファイルとして保存し、GIMPのプラグインディレクトリに配置し、GIMPを再起動すると、スクリプトがGIMP内にインストールされ、新しいフィルタ “Adjust brightness and contrast…” が利用可能になります。