gimp 插件_使用Python编写GIMP插件

gimp 插件

本文是关于使用GIMP-Python的,这是一组Python模块,允许您在Py​​thon中进行编程以自动执行GNU图像处理程序(GIMP)中的命令。 这些Python模块是libgimp库的包装器。 GIMP-Python与Script-Fu扩展名不同。 在Script-Fu中,插件用于执行脚本。 在GIMP-Python中,Python脚本占据了中心位置并完成了工作。 您可以从GIMP本身内部实例化GIMP-Python脚本,也可以使用GIMP的批处理模式从命令行启动它。

在本文中,您将学习如何编写Python代码,该代码可以自动执行GIMP中的两个不同任务:调整图像大小并将其保存为不同格式。

您可以在许多不同的平台上安装和使用GIMP和Python,包括Linux®,MacOS®X和Microsoft®Windows®。 GIMP和Python的跨平台性质意味着您可以使用Python为GIMP编写复杂的插件,并能够在各种平台上运行它们。

GIMP概述

GIMP是一个开源的图像处理程序,许多人将其用作某些商业产品的可行替代方案。 GIMP处理复杂的功能,例如图层和路径。 GIMP支持多种不同的图像格式,并带有相对复杂的过滤器。 GIMP具有强大的社区支持和参与,因此通常很容易找到有关如何使用或扩展GIMP的信息。

请参阅相关主题的链接,下载并在计算机上安装GIMP。

Python脚本概述

Python是一种面向对象的脚本语言,可让您编写可在许多不同平台上运行的代码。 Python已被移植到.NET和Java™虚拟机上,因此您可以执行多种不同的方式来执行Python。 请参阅相关主题 ,以了解如何在您的计算机上安装Python。

Python存在许多模块,这些模块提供了无需编写自己即可重用的功能(GIMP-Python模块就是示例)。 Python模块的索引列出了许多不同的预构建模块,从处理超文本标记语言(HTML)和超文本传输​​协议(HTTP)连接到使用可扩展标记语言(XML)文件,您可以使用它们完成各种任务。 (请参阅参考资料 )。 您还可以构建自己的Python模块,从而允许在企业内重用部分代码。

与GIMP类似,Python也具有重要的社区支持。 这意味着您可以找到信息,以及下载和使用相对成熟的工具来帮助您进行Python开发。

在继续本文的其余部分之前,请根据Python网站上的说明在您的操作系统上安装Python。 通过打开命令提示符并键入python --version来确保正确安装了python --version 。 结果应该类似于清单1中的结果

清单1.验证Python的安装
$ python --version
Python 2.6.6

安装Python解释器后,您可以在任何文本编辑器中创建Python文件,并使用解释器运行它们。 您还可以使用Eclipse的PyDev插件,该插件提供语法高亮显示以及其他一些功能,例如为您捕获语法错误。 另一个选择是直接在Eclipse中使用Python控制台,这对于寻求帮助很方便。

GIMP-Python模块应该已经安装了较新版本的GIMP。 要查看它们是否已安装,请打开GIMP,然后查看“过滤器”菜单下是否具有Python-Fu菜单选项。 如果在此处看到该选项,则可以开始编写脚本了。 如果看不到该选项,请按照“ 相关主题”部分中的链接安装GIMP的Python扩展。

如果要为Eclipse使用PyDev插件,请遵循以下步骤:

  1. 通过选择帮助>安装新软件来安装PyDev插件。
  2. 使用http://pydev.org/updates作为更新站点(请参阅参考资料 )。
  3. 遵循其余的安装过程,并在完成后重新启动Eclipse。
  4. 重新启动Eclipse之后,选择File> New> Project以创建一个新项目。
  5. 选择PyDev \ PyDev项目 ,然后单击下一步
  6. 输入项目的名称(例如MyPythonGimpPlugins )。
  7. 清除“ 使用默认值”复选框,并为Python插件输入GIMP目录的位置, 如图1所示。
    图1.使用用于Eclipse的PyDev插件创建一个新项目
    屏幕截图显示了正在创建的MyPythonGimpPlugins项目,项目类型为Python,语法版本2.6,解释器为默认项目
  8. 单击链接以配置解释器。 只要您正确安装了Python并且在路径上,“ 自动配置”按钮就应该起作用。

对于您的项目,请确保添加包含GIMP Python模块gimpgimpfu的文件夹。 通过使用Project> Properties将此目录添加到您的Eclipse项目(但不要将其添加到基本路径),如图2所示。

图2.将GIMP-Python模块目录添加到Eclipse中的项目
屏幕截图显示,PYTHONPATH现在在Eclipse中添加了/usr/lib/gimp/2.0/python

单击PyDev-PYTHONPATH 。 然后选择“ 外部库”选项卡,然后单击“ 添加源文件夹”按钮以添加安装GIMP Python模块的文件夹。 路径将类似于/usr/lib/gimp/2.0/python/。

您还可以在Eclipse中运行Python控制台。 在控制台可见的情况下,从控制台列表中选择Pydev控制台

注册脚本

Python文件位于用户的主GIMP文件夹中。 在Mac和Linux系统上,该文件夹为〜/ .gimp-2.6 / plug-ins。 Python脚本文件也应该是可执行的,并且在第一行具有Python解释器,就像标准脚本声明一样,如清单2所示。

清单2.一个基本的Python脚本,显示“ Hello,world!”
#!/usr/bin/python

print "Hello, world!"

您需要注册GIMP的Python脚本,才能将该插件放入GIMP菜单之一。 清单3显示了在GIMP中注册脚本并显示“ Hello,World!”所需的最基本的脚本。 调用控制台时。

清单3.向GIMP注册您的插件
#!/usr/bin/python

from gimpfu import *

def plugin_main(timg, tdrawable):
    print "Hello, world!"

register(
        "python_fu_resize",
        "Saves the image at a maximum width and height",
        "Saves the image at a maximum width and height",
        "Nathan A. Good",
        "Nathan A. Good",
        "2010",
        "<Image>/Image/Resize to max...",
        "RGB*, GRAY*",
        [],
        [],
        plugin_main)

main()

register()方法提供有关插件的GIMP信息。

register()方法具有多个参数,这些参数告诉GIMP如何显示插件的菜单选项,以及从菜单启动插件时要调用的Python方法。 表1显示了register()方法的参数。

表1. register()方法的参数和示例
参数 描述
proc_name python_fu_resize 您可以从命令行或脚本中调用的命令的名称
脱口秀 以最大宽度和高度保存图像 有关在过程浏览器中显示的插件的信息
救命 以最大宽度和高度保存图像 插件帮助
作者 内森·A·古德 插件的作者
版权 内森·A·古德 插件的版权持有人(通常与作者相同)
日期 2010 版权日期
标签 <Image> / Image / Resize to max ... 插件在菜单中使用的标签
图像类型 RGB *,灰色* 插件处理的图像类型
参数 [] 插件方法的参数
结果 [] 插件方法的结果
功能 plugin_main 在您的Python代码中调用的方法的名称

通过打开Python-Fu控制台(单击Filters> Python-Fu> Console )并键入清单4中所示的命令,您可以获得有关register方法的参数的最新信息。

清单4.使用Python控制台获取帮助
import gimpfu 
help(gimfu.register)

将值放入register方法后,保存脚本。 确保它是可执行文件,并且位于.gimp2-6 / plug-ins文件夹中。

保存脚本后,使用gimp命令从命令行启动GIMP。 这应该使您能够查看插件打印的所有信息,包括print语句的输出。 另外,如果您的插件有任何错误,请在此处查看。

启动GIMP后,转到Image菜单,您可以在其中看到新的Resize to max菜单项,如图3所示。

图3.插件的新菜单项
屏幕截图显示GIMP中“图像”菜单的底部显示“最大调整为最大”。

现在,您的插件已在GIMP上正确注册了自己,并且能够单击该插件的菜单项,您可以继续添加Python代码以调整图像大小了。

脚本调整大小

在GIMP中拥有Python插件之后,您可以将实际代码添加到插件代码内部的plugin_main方法中。

清单5演示了调整图像大小的代码。

清单5.在plugin_main方法中添加代码
def plugin_main(timg, tdrawable, maxh=500, maxw=500):

    currentWidth = tdrawable.width
    currentHeight = tdrawable.height
    
    newWidth = currentWidth
    newHeight = currentHeight
            
    if (maxw < newWidth):
        newWidth = maxw
        newHeight = (float(currentHeight) / (float(currentWidth) / newWidth))
        
    if (maxh < newHeight):
        newHeight = maxh
        newWidth = (float(currentWidth) / (float(currentHeight) / newHeight))
        
    pdb.gimp_image_scale(timg, newWidth, newHeight)

在执行一些基本计算以查找缩放后的图像大小的值之后,Python代码只需调用pdb.gimp_scale_image方法来调整图像的大小。 由于该框中的值是最大值,因此脚本需要检查当前图像的宽度和高度,以查看是否需要限制图像的尺寸。 如果任一图像尺寸大于最大尺寸,则将约束尺寸设置为最大尺寸,然后计算另一个尺寸。

要查找可以在Python脚本中调用的其他方法的更多信息,请参阅GIMP中的“ 帮助”>“过程浏览器”pdb.gimp_image_scale方法的过程浏览器如图4所示。

图4.在过程浏览器中查看gimp-image-scale方法
屏幕截图在左侧显示了一系列过程,突出显示了gimp-image-scale,在右侧显示了有关该过程的详细信息。

运行调整大小的插件脚本

添加代码以执行调整大小后,在GIMP中打开图像。 单击新的图像>调整为最大大小菜单项。 您的脚本要求您提供大小,如图5所示。

图5.插件的输入参数
屏幕截图显示了python_fu_resize的参数窗口,其中最大宽度和最大高度的输入都设置为500

当您单击OK时 ,将执行plugin_main方法,并且脚本将调整图像的大小。

编写图像转换脚本

现在,您可以使用该插件来调整图像的大小了,可以更新Python脚本以将图像另存为其他图像格式。 这使您可以将原始图像另存为JPEG文件,并调整其大小以适合某些限制。

清单6显示了该脚本的新添加内容。

清单6.添加代码以保存原始图像的JPEG副本
#!/usr/bin/python

from gimpfu import *

def plugin_main(timg, tdrawable, maxh=500, maxw=500, savecopy=TRUE):

    currentWidth = tdrawable.width
    currentHeight = tdrawable.height
    
    newWidth = currentWidth
    newHeight = currentHeight
            
    if (maxw > newWidth):
        newWidth = maxw
        newHeight = (float(currentHeight) / (float(currentWidth) / newWidth))
        
    if (maxh > newHeight):
        newHeight = maxh
        newWidth = (float(currentWidth) / (float(currentHeight) / newHeight))
        
    pdb.gimp_image_scale(timg, newWidth, newHeight)
 
    if savecopy:
        pdb.file_jpeg_save(timg, tdrawable, timg.name+".jpg", timg.name+".jpg", 
                           0.9, 0, 0, 0, "", 0, 0, 0, 0)

register(
        "python_fu_resize",
        "Saves the image at a maximum width and height",
        "Saves the image at a maximum width and height",
        "Nathan A. Good",
        "Nathan A. Good",
        "2010",
        "<Image>/Image/Resize to max...",
        "RGB*, GRAY*",
        [
                (PF_INT, "max_width", "Maximum Width", 500),
                (PF_INT, "max_height", "Maximum Height", 500),
                (PF_BOOL, "copy", "Make a JPEG copy", TRUE),
        ],
        [],
        plugin_main)

main()

您可以使用GIMP的“ 帮助”>“过程浏览器”从过程数据库(pdb变量)中获取要使用的方法的名称,如图6所示。

图6.在过程浏览器中查找另存为JPEG的方法
屏幕截图显示了突出显示文件jpeg-save的左侧的过程列表以及右侧的有关过程的信息,其中包括带有类型和用途的参数列表

用于参数输入类型的常量来自gimpfu库。 您可以通过在GIMP或Eclipse的Python控制台中键入清单7中所示的命令来获取可用常量列表。

清单7.获得有关gimpfu常量的帮助
import gimpfu
help(gimpfu)

常量以PF_开头,并定义可用于输入表单上的控件的数据类型。

运行更新的插件脚本

在将新代码添加到Python脚本中以将图像另存为JPEG之后,您可以通过在GIMP中打开图像并使用“ 图像”>“调整最大尺寸”菜单项来执行插件。 您会看到更新后的参数输入框,如图7所示。

图7.更新后的参数输入
屏幕截图显示了python_fu_resize参数窗口,其中包含Maximum Width和Maximum Height条目以及一个用于“制作JPEG副本”的新按钮

现在,您已经制作了脚本并在某些图像上进行了尝试,您可以在文件夹中的所有图像上运行插件。

在文件夹上同时运行

GIMP具有非交互式批处理模式,该模式允许您从命令行调用GIMP命令。 您可以使用命令行功能使用标准通配符对文件夹中的所有图像进行操作。

例如,可以使用清单8中的命令将图像保存为JPEG的方法直接传递到GIMP的批处理模式。

清单8.使用GIMP的非交互式批处理模式保存图像
gimp -i -b '(file-jpeg-save "Menu_006.png" 200 200 TRUE)' -b '(gimp-quit 0)'

但是,在考虑大小约束所需的计算时,这变得有些困难。 因此,此插件极大地简化了这两种操作,因此您可以从单个GIMP命令调用它们。

现在您的插件可以使用并在GIMP中注册,该插件在GIMP的过程数据库中具有其自己的命令。 通过转到过程浏览器(GIMP中的“ 帮助”>“过程浏览器” )并键入您为插件指定的名称,可以看到用于插件的命令。 例如,如果您如清单6所示在register方法中将其命名为python_fu_resize ,您将在GIMP过程浏览器中将其命名为python-fu-resize 。 您可以使用gimp命令和-i -b标志从命令行在GIMP Procedure Browser中显示该命令,如清单9所示。

清单9.从GIMP非交互式批处理模式调用您的插件
gimp -i -b '(python-fu-resize "myimage.png" 200 200 TRUE)' -b '(gimp-quit 0)'

GIMP打开您指定的图像,使用您提供的参数执行命令,然后退出而不保存对原始图像所做的任何修改。 通过在非交互式批处理模式下使用GIMP命令,您可以对对包含图像的整个文件夹进行大规模修改的脚本。

清单10中显示的命令在文件夹中的所有可移植网络图形(PNG)图像上操作新插件的命令。

清单10.从GIMP调用文件夹中所有图像上的插件
gimp -i -b '(python-fu-resize "*.png" 200 200 TRUE)' -b '(gimp-quit 0)'

摘要

Python是一种面向对象的脚本语言,可让您编写可在许多不同平台(例如Linux,Mac和Windows)上执行的脚本。 对Python脚本语言的工具支持非常丰富-从文本编辑器中的简单语法突出显示到Eclipse插件。

GIMP是可在许多不同平台上对图形文件进行复杂编辑的应用程序。 GIMP支持插件的概念,该插件提供了扩展点,您可以使用这些扩展点通过脚本来自动执行甚至是非常复杂的任务。 由于GIMP在插件中支持Python脚本编写,因此您可以使用Python扩展GIMP。 使用非交互式批处理模式,您可以使用适合脚本编写的方法从命令行调用插件。


翻译自: https://www.ibm.com/developerworks/opensource/library/os-autogimp/index.html

gimp 插件

GIMP-Python是一组Python模块,允许您在Python编写脚本以自动执行GNU图像处理程序(GIMP)中的命令。与Script-Fu扩展不同,GIMP-Python的重点是使用Python脚本完成任务。您可以从GIMP内部实例化GIMP-Python脚本,也可以使用GIMP的批处理模式从命令行启动它。要检查是否已安装GIMP-Python模块,请打开GIMP并查看“过滤器”菜单下是否有Python-Fu菜单选项。 GIMP-Python模块应该已经安装在较新版本的GIMP中。如果在“过滤器”菜单下没有看到Python-Fu选项,请按照相关链接中的说明安装GIMPPython扩展。使用GIMP-Python,您可以编写自定义脚本来扩展GIMP的功能,自动化任务并处理图像。Python-Fu控制台是一个运行Python shell的对话窗口,您可以在其中执行Python脚本和GIMP命令。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [gimp 插件_使用Python编写GIMP插件](https://blog.csdn.net/cuxiong8996/article/details/107153790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [GIMP软件都支持python脚步批量处理了](https://blog.csdn.net/m0_46268055/article/details/125455145)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值