问题标签 [python-fu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
760 浏览

python - 在 gimp 的 python 控制台中调用 gimp-drawable-set-pixel 时出错

我将这段代码直接输入到 Gimp 的 Python 控制台中:

并且在调用 gimp-drawable-set-pixel 函数后出现此错误:

当使用四个字节而不是三个字节调用时,它也会产生相同的错误。

我在 Ubuntu 14.04.01 x86_64 上使用 gimp 2.8.10

0 投票
1 回答
6455 浏览

python - 批量导出 Gimp 中所有打开的窗口

我只是在 gimp 中手动编辑了 200 多个 .PDF 文件,我想一次批量导出所有文件(以 .PDF 格式),而不是一个一个地导出。

我已经plugin-registry安装了,但我不确定在这种情况下是否可以利用它。

我想我需要的是一个脚本/控制台命令,但我对 Python 一无所知。

谢谢你的帮助。

0 投票
3 回答
9718 浏览

python - 如何使用 gimp 的脚本 fu 保存(导出)所有图层?

使用 gimp fu,我可以保存一层的内容至少,我是这样解释的,gimp_file_save因为它需要参数drawable)。

现在,我有以下脚本:

当我使用pdb.gimp_file_save(img, drawable, '/temp/tq84_write_text.png', '?')保存图像时,它只会导出“文本”层。然而,如果我使用pdb.gimp_file_save(img, background_layer, '/temp/tq84_write_text.png', '?')它只会导出背景。那么,如何将两个图层导出到一个图像中(就像菜单File -> Export As一样)。

0 投票
2 回答
2993 浏览

gimp - 在 GIMP 中使用 python-fu 缩放图像比通过内置 GUI 更慢

我在 OS X 上的 GIMP 2.8.14 中使用 Python-Fu 来自动化我的游戏资产管道生产。

但是我注意到,与内置功能“Image > Scale Image...”相比,当我从脚本执行pdb.gimp_image_scale方法时,它的速度较慢。

通过脚本将白色图像从 8000x8000 缩小到 2000x2000 需要 6.8 秒,而 GUI 需要 1.7 秒。这不是那么关键,但是通过脚本缩小我的资产需要 3 分 47 秒,而 GUI 需要 40 秒。

我的活动监视器显示,当我执行脚本时 CPU 使用率仅高达 30% 左右,而内置 GUI 缩放使用率高达 100%,这意味着在 OS X 上,单个 CPU 内核运行速度尽可能快.

有谁知道,我该如何改变这种行为?

奇怪的是:这似乎只与 gimp_image_scale 有关。gimp_image_select_contiguous_color、gimp_selection_grow、gimp_selection_feather 和 gimp_edit_bucket_fill_full 等其他操作将 CPU 使用率提高到 100%。

在 Windows 上它是一样的,但实际上并没有那么糟糕:通过脚本 1 分钟 28 秒,通过内置 GUI 33 秒。

UPDATE1: 我发现活动监视器具有“CPU 历史记录”功能,我发现我的假设是错误的:100% 不在 1 个核心上,25% 分布在 4 个核心上。

那么为什么在这两种情况下都只运行 25% 呢?为什么 gimp_image_scale 不是多线程的?

通过 GUI 进行多线程缩放(左侧)与通过脚本进行单线程缩放(右侧)

更新 2: 当我从“Filters>Python-Fu>Console”运行我的脚本时,它实际上是多线程的并且速度很快。

更新 3: 当我在没有输入值(例如比例)的情况下运行我的脚本并对值进行硬编码时,它也可以多线程快速运行。当从对话框触发缩放时,它看起来是单线程的。

0 投票
1 回答
4285 浏览

python - 如何通过 Gimp 从 shell 执行 Python-Fu 脚本

我试图找出一种简单的方法来执行我编写的 Python-Fu 脚本,该脚本在 Gimp 的 Python-Fu 解释器插件中以单线程模式工作,但在重构为其多处理等效项时将不再工作,因为Windows 非 POSIX/OS.Fork 限制在Pool.map_async(). 作为一种解决方法,我试图直接从 cmd shell 调用脚本,但无法找出正确的命令来完成它。我的 PATH 变量上有 gimp bin 目录,并试图实现如下所示的目标......

有没有办法让 Gimp 从 Windows cmd shell 发出的命令中使用其 Python-Fu 模块执行 python 脚本?

只是为了增加背景,我从以下文档中获得灵感......

从 Shell 调用 GIMP Python

所有这一切意味着您可以使用 (plug-in-script- fu-eval ...) 评估器直接从您的 shell 轻松调用 GIMP Python 插件,例如上面的插件:

0 投票
1 回答
1018 浏览

python - 如何在 gimp python-fu 中使用当前画笔大小进行绘制?

我正在编写一个 GIMP python-fu 脚本,它基本上只是在当前图层上绘制一个黑色圆圈,填充图层。我遇到的问题是即使在 gimp_context_set_brush_size() 将活动画笔大小设置为图像大小之后, gimp_pencil() 仍继续使用默认画笔大小(当我从 GIMP 运行脚本时,画笔大小滑块变为图层的宽度,但所做的标记仍然是默认值 50x50)这是我的代码:

我究竟做错了什么?

0 投票
1 回答
1939 浏览

python - Gimp:如何获得路径工具点的坐标?

我是 gimp python-fu 编程的新手,我花了 4 天没有运气来找出最合适的函数,以便获取绘制路径的坐标并在 gtk 消息框上显示输出,如下图所示.

在此处输入图像描述

请考虑我在 Windows 机器上开发

我已经尝试过这样的代码:

有时插件本身不会显示在菜单中,有时根本没有输出。

0 投票
1 回答
5518 浏览

gimp - Python-fu/gimpfu 参数 - “图像”是什么意思?

我一直在尝试从 script-fu 切换到 python-fu,但我无法弄清楚我应该为“image”参数传递什么。在 script-fu 中它只是一个整数,但是当我将相同的整数放入 python-fu 时,它只是说它是错误的类型。与字符串和浮点数相同......我应该在这里放什么?文档只是说它采用的参数是“IMAGE”,但这是什么意思?我在哪里可以找到它?我如何得到它?

这是口译员的照片。

0 投票
2 回答
1948 浏览

python - 在 Gimp 中使用 python 脚本打开文件,例如 File->Open

TL;DR:如何使用 Python 在 Gimp 中打开图像,就像使用 (File->Open) 一样,以获得Overwrite file.png选项并避免Save the changes to image 'sample.png' before closing?对话框。

我为 Gimp 编写了一个 Python 脚本,它对选定区域进行了一些修改,然后将其保存为 PNG。之后,我想打开文件,以便用户可以检查一切是否正确或更改某些内容。由于插件的用户不一定知道如何使用 Gimp,因此"Save the changes to image 'sample.png' before closing?" 对话框可能会令人困惑。
我目前使用的方法是

0 投票
1 回答
1149 浏览

gimp - 为什么“清除”不起作用?

我有一个 python-fu 脚本,它大部分都在工作。它扫描图层以查找颜色,矩形选择该颜色的连续区域,将图像的部分复制到该选择所覆盖的另一个图层中,并将其保存到单独的文件中。都好。

现在必须清除矩形选择,这样它就不会作为其他集合的一部分再次被选中,并且扫描重新开始,以便它可以找到下一个要保存的连续矩形块。

不幸的是,我可以看到扫描遍历了已清除的区域,并且调试输出显示它仍然认为颜色在那里。尽管我可以看到该区域是透明的。所以,我一定错过了告诉 gimp 更新的步骤。

我以为我有以下几点:

gimp_edit_clear确实清除了我正在搜索的图层中的选择-我看到了这种情况-但gimp_drawable_update似乎没有做任何事情,因为当循环在已清除的位置上进行时,它报告旧颜色仍然存在.

我错过了什么?