【问题标题】:Change the background from transparent to some color using gimp使用 gimp 将背景从透明更改为某种颜色
【发布时间】:2014-08-14 14:34:48
【问题描述】:

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

【问题讨论】:

标签: image-processing gimp python-fu


【解决方案1】:

是的,有 - 虽然这个问题不是完全重复的,但每次有人要求在 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_layermethod 没有真正记录在案,可以替换 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

【讨论】:

  • 谢谢 jsbueno。我知道如何使用 python-fu 处理一批文件。但我不知道如何将透明背景修改为纯色。
  • 您必须在加载的图层后面添加另一个图层,并使用所需的纯色。答案中的image.new_layer 调用就是这样做的——你必须在调用它之前调用pdb.gimp_context_set_foreground 来设置比赛前景色,这很难。
【解决方案2】:

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

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')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    相关资源
    最近更新 更多