モブ沢工房

プログラミングとかLinux関連(特にOSSのグラフィックツール関連)とかレトロゲームとか3Dプリンタやら日曜大工等、色々。

gimp 2.8.16で.oraファイルを開くのが失敗する件

gimpに、mypaintで吐いたora(OpenRaster)ファイルを読ませようと思った時に事件は起きた!

なんと、oraを読んでくれない…エラーダイアログを出して終了です。

ターミナルから起動してみたら

Traceback (most recent call last):
File "/usr/lib/gimp/2.0/python/gimpfu.py", line 851, in _run
res = apply(func, params[1:])
File "/usr/lib/gimp/2.0/plug-ins/file-openraster.py", line 274, in load_ora
if not name:
UnboundLocalError: local variable 'name' referenced before assignment

なんともポカミスのようですね。確かにリリースノートを見るとora関連の改正が入っている…何かの手違いが起きたのでしょうか。

そんなわけで、/usr/lib/gimp/2.0/plug-ins/file-openraster.pyの、268行目ぐらいのfor item in get_layers(stack):の直前に

    name=None
    path=filename

を入れといたら読めるようになりました。

わかりやすいように、その上下の部分を含めて書くとこんな感じ。 parent_groups = [] が265行めぐらいです。

    parent_groups = []

    layer_no = 0
    name = None # <- この行を追加
    path = filename # <- この行も追加

    for item in get_layers(stack):

        if item is NESTED_STACK_END:
            parent_groups.pop()
            continue

(追記 2016/11/10) 実はXubuntu 16.04にアップデートして書き換え忘れてたのでora読ませたらエラーが出てビックリ、自分で自分のブログ見て対応したという(^^;

自分でこの記事を読んでみたら、実にわかりにくい書き方で閉口しましたorz

Windowsではどうだかわかりませんが、多分インストールされたディレクトリの下にあるplug-insディレクトリにfile-openraster.pyがあれば、そのファイルではないでしょうか。

diff

修正前のオリジナルと修正後のdiffも一応念の為に置いておきます。 まぁそもそも、このテキトーな修正で良いかどうかは不明なのですが…とりあえずうちでは読めています(汗

268,269d267
< name=None
< path=filename

問題箇所がC/C++で書かれてなくて面倒臭いことにならずに、よかった(^^;

追記:てかbugzillaよく見たら、すでにファイルされてて似たような解決策も出てましたw