【问题标题】:GIMP script can find custom palette when run in terminal but cant when inside a programGIMP 脚本在终端中运行时找不到自定义调色板,但在程序中却找不到
【发布时间】:2021-02-06 04:36:05
【问题描述】:

我想从colorindex = subprocess.run(["/usr/bin/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 -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")

【问题讨论】:

    标签: python linux gimp gimpfu


    【解决方案1】:

    由于我是 Windows 用户,我无法复制它,但我假设您的 E-Ink.gpl 调色板保存在您的个人调色板目录中,也许从 python 中将 gimp 作为子进程运行不会加载您的个人文件。

    您可以尝试通过使用 --gimprc=filename 选项指向您的个人 gimprc 文件来强制 gimp 使用您的个人设置。

    【讨论】:

    • 你的推理是对的。我不知道为什么添加您建议的选项并不能解决问题,但是在查找文件路径时,我注意到有一个用于 root 和 pi 的调色板文件夹,事后看来这是有道理的。我将调色板复制到 root 的调色板文件夹,现在可以正常工作了
    猜你喜欢
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 2018-07-08
    • 2020-11-20
    • 1970-01-01
    • 2017-02-16
    • 2020-10-10
    • 2020-05-30
    相关资源
    最近更新 更多