批量生成图像的高度图

时间:2016-11-01 12:11:15

标签: graphics gimp

我有很多.png文件,我正在寻找一种为每个文件生成高度图(或法线贴图)的方法。我可以从gimp normalmap插件中获得我想要的结果,但我需要一种方法来自动化该过程或替代工具。我不太了解重现它们的基础算法,而且一般来说很少关于cg。是否有可以执行此操作的库或工具?只要api /界面足够高,我就不会挑剔语言,虽然开源是可取的,因为我现在无法访问花哨的软件。谢谢!

1 个答案:

答案 0 :(得分:0)

你可以为此编写脚本GIMP本身。 我不知道你称之为'normalmap'的插件 - 或者'高度贴图'是什么意思(我知道高度贴图只是图像的灰度版) - 但即使它是第三方插件 - 在,应该可以通过脚本界面运行它。

转到plug-ins-> Python-FU->console - 您将被放到Python提示符下。单击“浏览”按钮 - 然后找到要呼叫的插件。如果单击“应用” - 浏览器会将插件调用的模板粘贴到Python提示符。

因此,在此之前,您可能需要测试调用:打开示例图像,转到Python提示符,然后键入以下内容获取对图像的引用: image = gimp.image_list()[0],然后获取对键入drawable = image.layers[0]的图像的第一层的引用。

这些应该是您需要预先创建插件调用的所有数据。如上所述,在提示符处粘贴对所需插件的调用。请注意,上面的imagedrawable名称只是变量名称 - 您可以选择自己的名称 - 但是当您从“浏览”按钮中选择“应用”时,这些名称通常是预先填写的进行程序调用。

一旦你开始使用它,就可以利用Python打开文件夹中的所有图像,应用插件并将其保存回来 - 你可以直接在控制台上或以后创建一个将显示在菜单中的插件。

import os
for filename in os.listdir('mydir'):
    if not filename.endswith('.png'): continue
    name = 'mydir/' + filename
    image = pdb.gimp_file_load(name, name)
    pdb.plug_in_bump_map(......)  # use your plug-in here
    outputname = 'mydir/' + name.split('.')[0] + '_normal.png'
    pdb.gimp_file_save(image, image.layers[0], outputname, outputname)
    pdb.gimp_image_delete(image)  # just frees the image from memory.

只需按两次,即可为整个文件夹运行序列。 (请注意,如果要运行“bump-map”插件,则必须将几个参数从变量名替换为所需的实际值。

如果这是您想要的,并且您将使用它,将它保存为.py文件,并将该代码放入适当的函数中以将其转换为插件   - 在我的答案中有一个填充示例:

GIMP: Create image stack from all image files in folder