[調べ中] GIMPのScript-Fuでテキストファイルに数値データを書き出す方法
GIMPのScript-Fuで少しばかりプログラムを組めるようにはなって来たんですが、細かいところで引っかかって、調べようにもまだ調べ方がよく分かってない段階です。まぁ三日坊主の壁は越えたと思うので、やり散らかして放置するよりは前進しています。やったね👍
調べ方が分からないというのは、だいたいはScript-Fuの言語であるTinySchemeの文法やどんな関数があるのかが分かってないってのが多いです。TinyじゃないSchemeの方はドキュメントがあるんですけどね。いやそっちのSchemeの方もドキュメントのどこに何があるのかがまだ見通せていないわけですが😋
まぁ寄り道に脱線した話はさておき、タイトルにある本題
「GIMPのScript-Fuでテキストファイルに数値データを書き出す方法」
について調べた範囲の内容をまとめることにします。
まず、GIMPでScript-Fuを実行するときに変数の値を追ってみたい場合、「gimp-message」という関数が使えます。
変数のような数値を書き出す場合は
と、一端文字列変換を噛まして関数にわたせばOK👌。
gimp-messageが実行されると、ダイアログに渡した文字列が表示されます。
上のスクリーンショットはScript-Fuのコンソールを開いて実行したものですが、サイドパネルにエラーコンソールを出しておくとこのようにそこに渡した文字列が表示されます。場合に寄ってはGIMPのウィンドウの一番下のラインにひっそり表示されたり、ダイアログウィンドウが開いたりするみたいです。
ただこのgimp-messageを使ってもこんなようにダイアログに表示されるだけなので、その出力をテキストファイルに落とそうとすると違った方法を取らなければなりません、たぶん。
(ダイアログからコピペしてテキストファイルに貼り付けるとかいう力技は、数百、数千という出力に対しては無力なので却下です🙅。エラーコンソールのテキストファイルアウトプットを使えば少しマシですが、こっちも余計な文字が入るので却下🙅)
で少し調べていたのですが、どうやら「open-output-file」という関数が使える模様。これはGIMPではなくTinySchemeの方の関数のようですが、これを使うとファイルをテキストファイルとして扱えるようになります。
簡単な例だと以下のような感じになるでしょうか?
数値を書き出す場合は、displayのところにnumber->stringを使います。あと、複数の変数や文字列と組み合わせて出力させたい場合は以下のように「string-apped」を用いて連結文字列を生成させればいいでしょう。
またdisplay関数でファイルにテキストを書き込んでいますが、print関数も使えるようです(なおdisplayとprintでは出力に若干の違いがある模様)。
とりあえずこれで変数の数値データをテキストファイルに書き出すという目的は達成出来たんですが、実のところちゃんとドキュメントに当たって調べたわけではないのでなんともかんともなところ。時間があるときにでもそのへんは調べるとして、今回の話はこんなところで。
AmazonのGIMP関連書籍など
調べ方が分からないというのは、だいたいはScript-Fuの言語であるTinySchemeの文法やどんな関数があるのかが分かってないってのが多いです。TinyじゃないSchemeの方はドキュメントがあるんですけどね。いやそっちのSchemeの方もドキュメントのどこに何があるのかがまだ見通せていないわけですが😋
まぁ寄り道に脱線した話はさておき、タイトルにある本題
「GIMPのScript-Fuでテキストファイルに数値データを書き出す方法」
について調べた範囲の内容をまとめることにします。
まず、GIMPでScript-Fuを実行するときに変数の値を追ってみたい場合、「gimp-message」という関数が使えます。
(gimp-message "なんか文字列")
変数のような数値を書き出す場合は
(gimp-message (number->string x))
と、一端文字列変換を噛まして関数にわたせばOK👌。
gimp-messageが実行されると、ダイアログに渡した文字列が表示されます。
上のスクリーンショットはScript-Fuのコンソールを開いて実行したものですが、サイドパネルにエラーコンソールを出しておくとこのようにそこに渡した文字列が表示されます。場合に寄ってはGIMPのウィンドウの一番下のラインにひっそり表示されたり、ダイアログウィンドウが開いたりするみたいです。
ただこのgimp-messageを使ってもこんなようにダイアログに表示されるだけなので、その出力をテキストファイルに落とそうとすると違った方法を取らなければなりません、たぶん。
(ダイアログからコピペしてテキストファイルに貼り付けるとかいう力技は、数百、数千という出力に対しては無力なので却下です🙅。エラーコンソールのテキストファイルアウトプットを使えば少しマシですが、こっちも余計な文字が入るので却下🙅)
で少し調べていたのですが、どうやら「open-output-file」という関数が使える模様。これはGIMPではなくTinySchemeの方の関数のようですが、これを使うとファイルをテキストファイルとして扱えるようになります。
簡単な例だと以下のような感じになるでしょうか?
(define outfile (open-output-file "/home/hogehoge/test_script-fu/data001.txt"))
(display "なんか文字列" outfile)
(newline outfile)
(close-output-port outfile)
数値を書き出す場合は、displayのところにnumber->stringを使います。あと、複数の変数や文字列と組み合わせて出力させたい場合は以下のように「string-apped」を用いて連結文字列を生成させればいいでしょう。
(string-append (number->string x) ", " (number->string y))
またdisplay関数でファイルにテキストを書き込んでいますが、print関数も使えるようです(なおdisplayとprintでは出力に若干の違いがある模様)。
とりあえずこれで変数の数値データをテキストファイルに書き出すという目的は達成出来たんですが、実のところちゃんとドキュメントに当たって調べたわけではないのでなんともかんともなところ。時間があるときにでもそのへんは調べるとして、今回の話はこんなところで。
AmazonのGIMP関連書籍など
コメント
コメントを投稿