2010/06/15(火) [n年前の日記]
#2 [prog][cg_tools][gimp][python] GIMP+Python-fuを少し勉強
GIMP 2.6.x からはリサイズ処理 ―― 拡大縮小時のアルゴリズムが変わって、結果画像にジャギーが出やすくなってしまったらしい。
回避するには、リサイズ作業をするときだけ 2.4.x を起動して作業するのが手っ取り早いらしいけど。2chのとあるスレで、Python-fu + ImageMagick (mogrify) を使ってリサイズする Python-fu スクリプトがアップロードされてたので試してみたり。
元のスクリプトは *NIX用だったので、Windows版GIMPでは使えなかった。Windows上でも動作するように修正してみたのだけど。以下の点でハマった。
他にも気付いた点をメモ。
回避するには、リサイズ作業をするときだけ 2.4.x を起動して作業するのが手っ取り早いらしいけど。2chのとあるスレで、Python-fu + ImageMagick (mogrify) を使ってリサイズする Python-fu スクリプトがアップロードされてたので試してみたり。
元のスクリプトは *NIX用だったので、Windows版GIMPでは使えなかった。Windows上でも動作するように修正してみたのだけど。以下の点でハマった。
- Windows上で Python-fu を利用すると、環境変数 path が初期化され、GIMPのインストールフォルダ\bin にしか path が通ってない状態になる。(OSの環境変数が破壊されるわけではなくて、Python-fu から見えている path が、OSのソレとは異なる内容になる。)
他にも気付いた点をメモ。
- import sys して if sys.platform == 'win32': 〜 else: 〜 と書けば、Windows用とそれ以外で処理を分けることができる。
- os.system('rm 〜') は、 os.remove(ファイルパス) でも同様の処理ができる。
- mogrify は、Windows版の場合、mogrify.exe といった感じで、「.exe」まで指定しないとダメっぽい?
- 空白文字を含んだパスの扱いに注意。
- 作業用のファイルを作成したいときは、import tempfile が使える。gettempdir() とすれば、作業用フォルダのパスを取得できる。(Windows XP Home SP3 + Python 2.6.4 の場合、ショートネームでパスが得られたので、空白文字云々は意識しなくても良さそう。)
- '<Image>/Image/〜' には登録できない。'<Image>/画像/〜' もダメだった。'<Image>/Filters/〜' なら登録できた。UNIX版 Python-fu とは動作が異なる?
- os.system(〜) より、import subprocess を使ったほうがいいのかもしれないが、そこまで修正はしなかった。
[ ツッコむ ]
以上です。