【GIMP】「プロシージャー’〇〇’の呼出し時にエラーが発生しました。〇を開いて書き込むことができません。」の対処法
この記事では、Windows11で使っている画像編集ソフト「GIMP」でPython-Fuが使われているプラグインの操作を実行しようとした時、「プロシージャー '〇〇’ の呼出し時にエラーが発生しました。’〇〇’ を開いて書き込むことができません。Invalid argument」といった問題が発生する対処法を書きます。
僕はWindows11のPCで「GIMP」を使っています。
AIを使ってGIMP内で編集している画像(レイヤー)をガビガビにせず綺麗に高解像度に拡大してくれるプラグイン「gimp_upscale」がめっちゃ良さそうと思いいざ使ってみたんですが、実行ボタンを押すと2つのエラーダイアログが表示されました。
<!--1つ目のエラーウィンドウ-->
GIMP エラーメッセージ
プロシージャー 'file-png-save-defaults' の呼出し時にエラーが発生しました。
'c:\users\�i�|��~1\appdata\local\temp\tmp31kksm.png' を開いて書き込むことができません。
Invalid argument
<!--2つ目のエラーウィンドウ-->
python-fu-upscale-with-ncnn 実行中にエラーが発生しました
RuntimeError: 'c:\users\�i�|��~1\appdata\local\temp\tmp31kksm.png' を開いて書き込むことができません。
Invalid argument
一部文字化けしていますが、そのまんまコピーしています。実際の画面でも文字化けしていました。
一つのウィンドウには「詳細な情報」の展開ボタンがあったので押してみると以下のように表示されました。
以上のような問題にぶち当たりましたが、何とか解決したので記事にします。あくまで僕の環境でなおっただけなので人によっては全然違うこともおおいにあります。絶対にね。
【原因】TMP・TEMPフォルダのパスに日本語が含まれていた
こういう時は英語だからと毛嫌いせず、エラー内容を読むのが早期解決につながると思っているので読んでみます。実際はChatGPTを使って秒で翻訳からの対処法コンボだったんですけどね。ぐふふ。
読んでみると、僕が実行した画像拡大プラグイン「gimp_upscale」の特定の行(line 741、line 362)のコードを実行した時にエラーが発生しているようです。
Windows11や使っているソフトで発生した一時的なファイルなどを保管する場所「TEMP」フォルダに何かしらの画像を生成しようとしている…みたいな記述もありました。
しかし、そこで正常に生成されない、あるいは生成はできたけど開いて書き込めない…的な感じのエラー内容だと僕は解釈しました。
僕が使おうとした「gimp_upscale」プラグインは、今開いている画像を高解像度に拡大するというものなので、一時的に処理用で「TEMP」フォルダーに画像生成するのは全然ありえるな…と思いました。
さらには「TEMP」フォルダーの日本語のパス部分が文字化けしていたことから、最終的に「TEMPフォルダーのパスがうまく指定されていない、あるいは文字化けしている部分は日本語だから日本語が含まれている場合エラーがでる」という推測に至りました。
GIMPうんぬんじゃなくてMicrosoftのWindows11の初期セットアップで自動的にユーザー名がフォルダー名になる最悪仕様がここでも悪さしていた…ってわけでした。
【対処法】TMP・TEMPフォルダの場所(環境変数)を変更する
GIMP内の設定から一時フォルダーを変えても無駄
GIMP→上部の「編集」タブ→設定→左側サイドバーの「設定」→一時フォルダーとスワップ用フォルダーも関連しそうだなと思い日本語が含まれていない場所に変更してみたんですが、無関係でした。
今回使ったプラグインだと、GIMPで指定しているTEMPフォルダー内に生成するのではなく、Windowsで指定されているTEMPフォルダー内に作成するって感じの内容っぽいです。
プラグインによってはGIMPのTEMPフォルダーを利用する場合もあると思うので、そうだったら多分今回のエラーはでてないんじゃないかなと思います。
TEMPフォルダーのパスに日本語があるか確認
エクスプローラーを起動してアドレスバーに以下のどっちかを貼り付けて開きます。
<!--現在のTEMPフォルダーを開く①-->
%temp%
<!--現在のTEMPフォルダーを開く②-->
%username%\AppData\Local\Temp
現在パスが通っているTEMPフォルダーが開かれます。注目すべきはその過程にあるユーザー名部分です。僕の場合「C:\Users\ナポリタン寿司\AppData\Local\Temp
」でがっつり日本語が含まれていました。
日本語が含まれているとエラーがでます。
つまり、日本語以外にするか日本語がないパスに保存場所変更すると解決です。
とはいえWindows11のセットアップ時に自動的にこうなっているので名前は気軽に変えられません。手動で変えるとなると相当に大変な作業でとても素人が手を出せる領域じゃないです。レジストリの全部のパスを変えたり、各種ソフトの設定を全部直したり…。
となるとTEMPファイルの保存場所を日本語が含まれていないパスに変更するのが現実的だと思います。
新しい場所にTEMPフォルダーを作成する
パスに日本語が含まれていない場所でまぁ一番お手軽なのはドライブ直下です。こだわりがある方は別に好きな場所でいいです。
僕はCドライブ直下にしました。「Program Files
」とか「Windows
」フォルダーがある場所です。
新しくフォルダーを新規作成し、名前を「TEMP」にします。
<!--Cドライブ直下に以下の名前のフォルダーを新規作成-->
TEMP
環境変数からTEMPフォルダーの保存場所を変える
ここからがちょっと高度です。
スタートメニュー→「詳細」で検索→「システムの詳細設定の表示」をクリックします。Windows+R→「sysdm.cpl
」でも開けます。開けるならどの方法でもOKです。
システムのプロパティウィンドウが起動するので、上部の「詳細設定」タブ→下部にある「環境変数」ボタンをクリックします。
「TEMP」を選択→「編集」をクリックします。
変数値のパスを先ほど作成したTEMPフォルダーのパスに変更します。「ファイルの参照」から辿るか、エクスプローラーのパスをコピーして貼り付けると手っ取り早いです。
僕の場合Cドライブ直下に作成したのでパスは「C:\TEMP
」になります。OKを押します。
同様に「TMP」のほうも変更します。同じ「C:\TEMP
」でOKです。
同階層に「TMP」フォルダーを作成してそっち指定してもOKです。両方一時ファイル保存する場所なのでまとめてもいいしまとめなくもいいというお好みです。
「OK」をクリックします。
システムのプロパティウィンドウももう不要なので「OK」をクリックして閉じます。
別にそのままでもいいと思いますが、どうしても気になる方は既存のTEMPフォルダー内に貯まっている一時ファイルを掃除するといいかもです。また何かあった時に使うかもしれないのでフォルダーの削除はやめたほうがいいかなと。
GIMPを再起動して正常動作するか確認
一旦「GIMP」を再起動します。確実なのはPCの再起動です。
TEMPの場所(パス)を変えることで、正常に「gimp_upscale」プラグインが動作するようになりました。
これまではウェブサイトやら「waifu2x-caffe」あたりを使って拡大していましたが、GIMP内でささっと拡大処理できるようになり超便利です。
感想
以上、「GIMP」ソフトでPython-Fuが使われているプラグイン(gimp_upscale)を実行しようとした時、「プロシージャー '〇〇’ の呼出し時にエラーが発生しました。’〇〇’ を開いて書き込むことができません。Invalid argument」うんぬんのエラーが出た話と対処法でした。
使っているプラグインによって発生するエラーは様々です。同じようなエラーメッセージでも解決方法は違うこともあります。少なくとも「gimp_upscale」で「TEMP」うんぬんみたいな文字が含まれたエラーが出た場合はほぼ本記事の方法で解決すると思います。
一点注意事項ですが、文字通り一時ファイルの保存場所を既定から変更しているので、それに伴う不具合がどっかで発生するかもです。
GIMPに限らずWindows全体で変わっています。環境変数のパスごと変えているのでいい感じに処理してくれるとは思うんですけどね。
あとは本記事みたいな指南系ブログ記事で「TEMP」うんぬんの話が出た時、「あれ?俺のWindows11は記事で書かれている場所にTEMPフォルダーがないぞ?」ってならないように注意です。
「あ、そういえばあの時保存場所変えてたんだった」と思い出すようにしましょう。