使用自定义调色板调用gimp_image_convert_indexed,无法找到调色板



我正在制作一个脚本,将任何图像限制为3种颜色(将在程序中使用,以显示到电子墨水显示器)。我想使用GIMP的gimp_image_convert_indexed函数bc来做到这一点。Wand和PIP的.quantize不能按我想要的方式工作,看起来也不那么好。

当我使用gimp -idf --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-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
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

自定义调色板位于GIMP的调色板文件夹中(当我通过UI打开调色板时甚至可以识别它),为了安全起见,我将调色板的副本放在脚本运行的目录中。我尝试将文件名称和调色板名称设置为"eink"而不是"e - ink";它也有同样的误差。当我指定文件路径("/home/pi/.config/GIMP/2.10/palette/E-Ink.gpl")而不是"E-Ink"时,也发生了同样的事情。

这是colorindex.py (gimp脚本)

import os
from gimpfu import *
def python_colorindex(file):
os.system("echo gimp")
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")
os.system("echo processed image")
pdb.gimp_file_save(image, drawable, file, file)
pdb.gimp_image_delete(image)
print("Exit")

这里显示了错误和调色板

的路径这里显示gimp识别调色板(运行在同一台机器上,但通过Xming GUI)

在命令行中指定了-d选项,告诉GIMP不加载任何数据:即"不加载画笔、渐变、调色板、图案等";所以你的脚本不会加载你的调色板。

最新更新