使用 Gimp Python 插件导出所有 SVG 路径

Swe*_*Swe 5 python svg gimp gimpfu

我想编写一个 Gimp-Python 插件,以便从当前图像中导出所有 SVG 路径。这看起来很简单,但我坚持使用 pdb 调用,我可能没有正确调用过程,所以我需要你的帮助。

这是我的代码:

#!/usr/bin/env python

from gimpfu import *

def exportToSvg(img, layer) :
    gimp.pdb.vectors_export_to_file(img,"C:/Users/Public/Documents/output.svg",0)

register(
    "ExportToSvg",    
    "Export all SVG paths",   
    "Export all SVG paths from current image",
    "My Name", 
    "My company", 
    "2015",
    "<Image>/MyScripts/Export to svg", 
    "*", 
    [], 
    [],
    exportToSvg)

main()
Run Code Online (Sandbox Code Playgroud)

打开 Gimp 并加载图像后,当我单击我的插件时,我收到此错误:

调用 « gimp-procedural-db-proc-info » 时出错:未找到过程«vectors-export-to-file »

当我在 Gimp PDB 中搜索时,我可以找到“gimp-vectors-export-to-file”,那么问题是什么?我应该如何调用这个程序?

jsb*_*eno 1

你几乎就在那里 - “pdb”模块只是在模块级别公开,所以from gimpfu import *,不需要这样做gimp.pdb.<procname>- 只是pdb.<procname>(尽管如此,它会起作用)。

但真正导致错误的是该过程实际上被调用了 gimp_vectors_export_to_file- 而不是vectors_export_to_file-

您应该将其称为:

pdb.gimp_vectors_export_to_file(img,"C:/Users/Public/Documents/output.svg",None)
Run Code Online (Sandbox Code Playgroud)

另请注意,对于大多数需要图像项整数标识符的 PDB 调用,您应该传递表示该项的适当 Python 对象。用于保存各个向量的“Vectors”对象是通过调用其他PDB函数获得的。要保存所有向量 ,请传递 ,而不是函数描述中列出的“0” None

注意:您可以使用一个 Python 交互式控制台进行访问filters->python->console- 如果您首先以交互方式测试您的 pdb 调用和图像操作,那么为这些插件和脚本编写代码会容易得多。

要在交互式控制台中获取对图像的引用,请键入:

img = gimp.image_list()[0]