1

我有大量的图像。我不想将他们的背景更改为特定的颜色。让我们说绿色。所有图像都有透明背景。有没有办法在 Gimp 中使用 python-fu 脚本执行此操作。或者其他一些可用于以自动化方式执行此特定任务的工具。

4

2 回答 2

0

是的 - 虽然这个问题不是完全重复的,但每次有人要求在 GIMP 中自动执行某些任务时,我只输入创建 Python 插件的基础知识是不切实际的

我将不得不请您查看GIMP: Create image stack from all image files in folder以及其他一些与 python-fu 相关的基本答案。

在你得到一个简单的“hello world”脚本之后,只需注册一个脚本,它要求一个带有所需文件夹的字符串,使用 Python 的 os.listdir 或 glob.glob 来获取 iamge 文件的路径,然后简单地循环它们重复调用:

image = pdb.gimp_file_load (...)
image.new_layer(pos=1, fill_mode = FOREGROUND_FILL) 
pdb.gimp_file_save(...)
pdb.gimp_image_delete(image)

PDB 调用的参数很容易在 GIMP 的帮助下检查 procedure browser- 图像的new_layer方法没有真正记录,并且可以替换 3-4 个 pdb 调用 - 它的可能参数是:“名称”、“宽度”、“高度”, “offset_x”、“offset_y”、“alpha”、“pos”、“不透明度”、“mode”、“fill_mode”、

所有这些都是可选的。“pos”是图层位置:0 是在图像的顶部。“1”将位于最顶层的下方。

应该清楚的是,该gimp_image_delete调用只会从内存中删除图像,而不是从磁盘中删除文件。简单地在 Python 端取消引用它不会让 GIMP 忘记它。同样,如果您想与以这种方式打开的任何图像进行交互,则必须调用pdb.gimp_display_new 该图像。

于 2014-08-15T17:00:53.557 回答
0

您应该能够通过简单地将背景颜色设置为您想要的颜色来完成此操作,然后简单地展平图像,这将使所有透明区域都设置为当前背景颜色。

pdb.gimp_palette_set_background( 'green' )
image     = pdb.gimp_file_load ('myImage.png')
flatLayer = pdb.gimp_image_flatten( image )
pdb.gimp_file_save( image, flatLayer, 'myFlatFile.png' , 'myFlatFile.png')
于 2015-02-20T23:17:20.323 回答