省型旧型国電の残影を求めて

戦前型旧型国電および鉄道と変褪色フィルム写真を中心とした写真補正編集の話題を扱います。写真補正技法への質問はコメント欄へどうぞ

bio-formatでファイルを開く時は要注意! - ImageJ Pythonプログラミング Tips

 Pythonを使った、ImageJのプラグインスクリプトを編集して、一点気付いたことがあります。それはImageJで直接ファイルを開く場合と、bio-format Pluginを経由してファイルを開く場合で、ファイル名の扱いに違いがあるということです。

 実は、先日自作のプラグインを使って作業をしていたところ、ファイルを開く時にエラーが... 原因は何かと思って調べてみると、ファイルを入れていたフォルダにスペースが含まれていたためでした。そのため、スペースのところでフォルダ+ファイル名が途切れていると認識して、そんなファイルはありませんよ、とエラーになってしまったのでした。

  で、このときは16bit TIFFファイルを読み書きしようと思ってbio-formatプラグイン経由で読み書きしていたので、フォルダ名とファイル名を引用符で囲むことにして、次のように修正しました。

-----------------------------

[オリジナル]

IJ.run("Bio-Formats Importer", "open="+ folder + filename + " autoscale ...

# フォルダとファイル名を入れる folder 変数と filename変数が引用符で囲まれていないので、スペースを含むフォルダ名を入れた時にエラーが発生

[修正]

IJ.run("Bio-Formats Importer", "open=\'"+ folder + filename + "\' autoscale ...

# フォルダとファイル名を入れる folder 変数と filename変数を引用符で囲むように変更
 なお、引用符を使う場合は、引用符の前にバックスラッシュ \ (環境によっては"¥"で表示される)を加えなければならない

-----------------------------

 これで、無事スペースを含むフォルダ名でもファイルが開けるようになりました。やれやれと思って、今度はbio-format pluginを使わない8bit用のプラグインもフォルダ名とファイル名を引用符で囲むよう変更したところ...

------------------------------

[オリジナル]

IJ.open(folder + filename)

 

[修正]

IJ.open("\'" + folder + filename + "\'")

-------------------------------

これで走らせると、今度はエラーに...

つまり、bio-format pluginを使わず直接読む時は、ファイル名にスペースが入っていても引用符で囲む必要がないのでした。というか引用符で囲むとかえってエラーになります。直接読み書きするときとbio-format経由で読み書きするときで扱いが違うので要注意です。

 

思わぬ落とし穴でした。