在shell脚本中使用GIMP的色彩转透明度脚本

5
我正在尝试复制GIMP提供的颜色转透明度函数,该函数根据像素中颜色的数量添加透明度级别。 我想要知道如何在命令行中使用此功能的原因是可以在单击一次的情况下将此功能应用于多个图像,而无需逐个打开每个图像。 要从终端运行GIMP脚本,使用以下行:/Applications/GIMP.app/Contents/MacOS/gimp -i -b,后跟函数名称及其参数。 此函数名为color-to-alpha,需要4个参数才能正常工作,这些参数如下:
run-mode INT32 Interactive, non-interactive
image IMAGE imput image
drawable DRAWABLE input drawable
color COLOR Color to remove
所以我尝试了以下操作:/Applications/GIMP.app/Contents/MacOS/gimp -i -b '(color-to-alpha 0 "/Users/Maxime/Desktop/Images/fx_ice.png" 0 (0 0 0))' -b '(gimp-quit 0)' 但是我得到了以下错误:Error: ( : 2) eval: unbound variable: color-to-alpha 我猜问题出在我尝试传递参数的语法上。我已经尝试过查找如何像这种情况一样传递参数的示例,但是没有找到任何内容。 如果有人知道如何做到这一点,那就太好了。 谢谢。

我知道你想要“shell脚本”,但请不要这样做。可以使用GIMP内置的Python脚本(但我不知道它是否在OS X上可用),或者使用基于模式的GIMP脚本-fu。从外部shell进程开始执行此操作可能会为每个图像创建一个新的GIMP进程-这不是你想要的。 - jsbueno
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
7

好的,我已经找到了我的帖子的答案。

我一直在做的事情基本上都是错误的 :p

所以这里有一个批处理命令行,可以像GIMP的颜色到Alpha功能一样从图像中删除黑色背景:

/Applications/GIMP.app/Contents/MacOS/gimp -i -b "(let* ( ( image (car (file-png-load 1 \"/Users/Name/Desktop/img.png\" \"/Users/Name/Desktop/img.png\") ) ) (drawable (car (gimp-image-active-drawable image) ) ) ) (plug-in-colortoalpha 1 image drawable '(0 0 0) ) (gimp-file-save RUN-NONINTERACTIVE image drawable \"/Users/Name/Desktop/img2.png\" \"/Users/Name/Desktop/img2.png\") ) " -b "(gimp-quit 0)"

它像这样非常不易理解,因为它需要成为一个内联命令,但它在我的MAC上运行得很好。


将“(0 0 0)”的值更改为“transparent”将使颜色保持透明。 - Mtrompe
谢谢!正是我想要的。 - Christian
注意:letgimp-image-active-drawablegimp-file-save是主命令正常工作所需的指令。imagedrawable是指向当前加载的图像的内部变量。要运行任何其他命令,请用大括号括起来的正确命令替换(plug-in-colortoalpha 1 image drawable '(0 0 0) )。请查看此链接以获取有关语法的信息:https://www.gimp.org/tutorials/Basic_Scheme/ - mccbala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,