GIMP 脚本在终端中 运行 时找不到自定义调色板,但在程序内部时找不到
GIMP script can find custom palette when run in terminal but cant when inside a program
我想从这样的脚本内部执行 gimp -if --batch-interpreter python-fu-eval -b 'import sys;sys.path=["."]+sys.path;import colorindex;colorindex.python_colorindex("gimptemp.jpg")' -b 'pdb.gimp_quit(1)'
(在终端中 运行 时工作正常)(错误是因为 gimp 函数无法找到所需的调色板)
错误:
GIMP-Error: Calling error for procedure 'gimp-image-convert-indexed':
Palette 'E-Ink' not found
Traceback (most recent call last):
File "/usr/lib/gimp/2.0/python/gimpfu.py", line 827, in _run
return apply(func, params[1:])
File "/usr/lib/gimp/2.0/plug-ins/python-eval/python-eval.py", line 25, in code_eval
exec code in globals()
File "<string>", line 1, in <module>
File "./colorindex.py", line 7, in python_colorindex
pdb.gimp_image_convert_indexed(image, 1, 4, 3, FALSE, FALSE, "E-Ink")
RuntimeError: Palette 'E-Ink' not found
batch command experienced an execution error
/usr/bin/gimp: GEGL-WARNING: (gegl-tile-handler-cache.c:977):gegl_tile_cache_destroy: runtime check failed: (g_queue_is_empty (&cache_queue))
EEEEeEeek! 2 GeglBuffers leaked
我在终端中遇到了同样的问题,因为我不小心留下了 -d 标志,阻止了画笔和其他东西的加载,但显然我把它去掉了,所以我知道这次可能是什么阻止了调色板的加载,尤其是当它在终端工作。使用 subprocess.Popen 并没有改变错误。当我通过脚本打开 gimp 时,自定义调色板不会出现在调色板托盘 gui 中,但是当 运行 通过终端
时它会出现在 gui 中
这是colorindex.py
import os
from gimpfu import *
def python_colorindex(file):
image = pdb.gimp_file_load(file, file, run_mode=RUN_NONINTERACTIVE)
drawable = pdb.gimp_image_get_active_layer(image)
pdb.gimp_image_convert_indexed(image, 1, 4, 3, FALSE, FALSE, "E-Ink")
pdb.file_png_save(image, drawable, file, file, 0, 0, 0, 0, 0, 0, 0)
pdb.gimp_image_delete(image)
print("Exit")
我无法复制这个,因为我是 Windows 用户,但我假设您的 E-Ink.gpl 调色板保存在您的个人调色板目录中,也许 运行 gimp 作为 python 的子进程未加载您的个人文件。
您可以尝试通过使用 --gimprc=filename 选项指向您的个人 gimprc 文件来强制 gimp 使用您的个人设置。
我想从这样的脚本内部执行 gimp -if --batch-interpreter python-fu-eval -b 'import sys;sys.path=["."]+sys.path;import colorindex;colorindex.python_colorindex("gimptemp.jpg")' -b 'pdb.gimp_quit(1)'
(在终端中 运行 时工作正常)(错误是因为 gimp 函数无法找到所需的调色板)
错误:
GIMP-Error: Calling error for procedure 'gimp-image-convert-indexed':
Palette 'E-Ink' not found
Traceback (most recent call last):
File "/usr/lib/gimp/2.0/python/gimpfu.py", line 827, in _run
return apply(func, params[1:])
File "/usr/lib/gimp/2.0/plug-ins/python-eval/python-eval.py", line 25, in code_eval
exec code in globals()
File "<string>", line 1, in <module>
File "./colorindex.py", line 7, in python_colorindex
pdb.gimp_image_convert_indexed(image, 1, 4, 3, FALSE, FALSE, "E-Ink")
RuntimeError: Palette 'E-Ink' not found
batch command experienced an execution error
/usr/bin/gimp: GEGL-WARNING: (gegl-tile-handler-cache.c:977):gegl_tile_cache_destroy: runtime check failed: (g_queue_is_empty (&cache_queue))
EEEEeEeek! 2 GeglBuffers leaked
我在终端中遇到了同样的问题,因为我不小心留下了 -d 标志,阻止了画笔和其他东西的加载,但显然我把它去掉了,所以我知道这次可能是什么阻止了调色板的加载,尤其是当它在终端工作。使用 subprocess.Popen 并没有改变错误。当我通过脚本打开 gimp 时,自定义调色板不会出现在调色板托盘 gui 中,但是当 运行 通过终端
时它会出现在 gui 中这是colorindex.py
import os
from gimpfu import *
def python_colorindex(file):
image = pdb.gimp_file_load(file, file, run_mode=RUN_NONINTERACTIVE)
drawable = pdb.gimp_image_get_active_layer(image)
pdb.gimp_image_convert_indexed(image, 1, 4, 3, FALSE, FALSE, "E-Ink")
pdb.file_png_save(image, drawable, file, file, 0, 0, 0, 0, 0, 0, 0)
pdb.gimp_image_delete(image)
print("Exit")
我无法复制这个,因为我是 Windows 用户,但我假设您的 E-Ink.gpl 调色板保存在您的个人调色板目录中,也许 运行 gimp 作为 python 的子进程未加载您的个人文件。
您可以尝试通过使用 --gimprc=filename 选项指向您的个人 gimprc 文件来强制 gimp 使用您的个人设置。