使用gimp将背景从透明更改为某种颜色

时间:2014-08-14 14:34:48

标签: image-processing gimp python-fu

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

2 个答案:

答案 0 :(得分: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)

在GIMP的帮助procedure browser中,可以轻松查看PDB调用的参数 - 图像的new_layer方法没有真正记录,可以替换3-4个pdb调用 - 可能的参数是:“name”,“width”,“height”,“offset_x”,“offset_y”,                               “alpha”,“pos”,“opacity”,“mode”,“fill_mode”,

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

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

答案 1 :(得分: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')