}ページHome2014-10-30色を選びやすくするツール「pcolors」を公開Tweetd3.jsの練習がてら、色を選ぶためのツール(ページ)「pcolors」を作った。色をマウスオーバーすると、いつもの16進のRGBの色がでてくるので、コピーすればOK。使い方としては例えば、「ドミナントカラー」で「暖色系」かな、となったらじゃあ色相は2で統一、トーンはvとp+、じゃあv2とp2+かな、となると「#e60044」と「#fad5cf」か、みたいな感じで使う。~プロに学ぶ、一生枯れない永久不滅テクニック~」で入った)まぁこれは見ての通りPCCSトーンマップなのだけど、WebにあるやつはPCCSの主張と見た目がどうもあってない気がしたり(紙であれば納得できる雰囲気になるのだと思う)、ページの構成がいまいちだったりしたので、自分で作った。ひとつひとつ埋めていったので、どこか間違っている色があるかも。いう機能があれば便利、みたいなのも気が向けば実装するかもしれない。(Script-Fu)にめげて「GIMPってPythonも普通に使えるんじゃね?」ってことで試してみたら罠もあったけどいい感じだったよって記事である。Linuxではもちろん、Windowsでもインストーラから入れればPythonが同梱されているので、気軽に使える。GIMPを普段から使うのであれば、マクロ的に使ってもいいと思うのだけど、GIMPを使ってなくても「UIの必要な画像処理」には便利だと思う。画像の表示、範囲選択とか、そういうのが本筋じゃないプログラムにさらっと提供できる。自前のOpenCVを使った画像処理ライブラリのフロントエンドとかね。用のプラグインを作成する」がわかりやすいので、詳しいチュートリアル的なものが必要であればそちらのほうで。こちらは、だいたいどんなことをすればできあがるのかなというのをイメージできるようざっくりと書くことにする。雛形があれば余計なところに時間がかからないので、作ったのがこちら。(WindowsであればC:\Users\{username}\.gimp-2.8\plug-ins)に適切なファイル名をつけて配置する。Unix系では実行権が必要なのでつけておく。register関数を書くまずプラグインをGIMP側に登録するregister関数の引数を埋めていく。Documentationを参照のこと。基本的には見ての通りのところを直していけばいいのだが、引数と書いた部分の配列に、項目を設定しておくと、スクリプト起動時にダイアログが現れて選択させることができる。文字列を受け取りたければ、以下のタプルを配列に入れる。Frameworkを参照。ここに入れた項目は、設定した関数名の関数に渡るので、入れた項目を覚えておく。実体の関数(雛形のplugin_main)を書くplugin_mainとregister関数で指定してあるので、この関数に処理を実装していく。引数は、現在のイメージ、レイヤーに続いて、先ほどregister関数で指定した引数を受け取るようにする。中の実装に関しては、大きく分けて以下の2つの方法で関数を呼び出していく形になる。pdb)というものが存在し、この関数をpdb.なんとかのような形で呼び出すことができる。480)どのようなプロシージャが存在するかは「ヘルプ>プロシージャーブラウザー」よりプロシージャーブラウザーを起動して検索することができる。gimpモジュールに含まれる関数を呼び出すレイヤーを作成したりといったベーシックな処理であれば、gimpモジュールにも関数が準備されている。以下のようにするとメッセージを表示することができる。Procedures」に一覧がある。Consoleが動くので「help(gimp.Image)」などとしても良い。Pythonで文法チェック書き終わったら、そのスクリプトをpythonコマンド(Windowsではインストールパス\Python\pythonにある)で実行してみる。実行したとき、gimpfuモジュールがない旨のメッセージが出ればひとまずOK。これで文法的なミスがないか確認する。gimpfu起動ここでGIMPを起動し、メニュー項目に指定した項目があり、実行できれば成功である。丁寧にチュートリアル通り作ればいいが、動けばいいやと雰囲気で適当に作ったらはまった。(Unixでは)実行権を与える必要がある忘れがちであるが、Unix系ではplug-insに置いたスクリプトに実行権が必要である。main()を忘れないregister()のあとにmain()があるが、これがないと動作しない。詳しくは追いかけていないが、実行権が必要であるところからして、このスクリプトは単体のプロセスとして動作し、main()の中でGIMP本体と通信して動作しているのだと思う。引数の配列で宣言した項目のほかに、現在のイメージとレイヤーを受け取っておく必要がある。WindowsではデバッグしにくいUnixではコンソールからgimpコマンドで起動すればエラーが出てくるが、Windowsではコンソールはデフォルトではない。そのため、困っているときは以下のように起動してみる。」の記事を参照されたい。Windows版GIMPではメッセージボックスが出ない(ことがある?)どっかの変数のデフォルト値の違いだと思うが、デフォルトではWindowsでインストールしたGIMPではgimp.messageでメッセージボックスが出なかった。いうときは、ウィンドウ>ドッキング可能なダイアログ>エラーコンソールで、リスト形式でエラーメッセージを見ると良い。」のブログ記事もわかりやすい。Professional」にあるいくつかのサンプルスクリプトを読むともっとイメージがつきやすいと思う。Registryの「python」タグでもPythonでの記述についてのサンプルが得られる。何に使ったか?ということで無事に書けるようになったわけだが、そもそもなぜ書くことになったか?先日、画像のピクセル数が見た目サイズの2倍の画像をベタなHTML+CSSに入れ込んでいくという作業があり、物理電卓をバチバチ叩きながら1/2サイズを作っていった。ここはGIMPじゃね?」ということで久々にScript-Fuを書こうとしたところ、どうもScheme脳に頭が切り替わらない。「Pythonも使えるんじゃね?Windowsも普通に入ってるわ」ということでPythonでGimpマクロ的なものを書いてみた次第である。結果、SchemeによるScript-Fuに比べると素直じゃない感はあるものの、仕組みを掴んでしまえば、Lispを普段書かない自分には圧倒的にサクサク書くことができた。そのギャップから、普段Pythonは書けないのに「俺ひょっとしてPython書けるんじゃね?」という謎の錯覚が生まれた。補足しておくと、どっちかっていうと今回は「これは覚えるチャンス」的な意味が大きくて、このケースでは実際にはCompassにサイズ計算させるとか、とか、sh+ImageMagickやPowerShellでディレクトリに置いたやつを一気に作る、とかのほうが現実的なアプローチだとは思うので、そちらを検討されたほうがよろしいかと。