所以我知道要打开一个程序,我只需要输入该程序的名称。
例子:
#! /bin/bash
gimp
现在我想知道我是否可以使用此脚本向 gimp 发送类似命令。例如打开 Gimp,然后在 Gimp 中转到命令打开 >,然后读取其中包含图像的给定文件夹。
例如我想要的是:
打开 gimp > 读取给定文件夹 > 逐个打开其中的所有图像 > 并对其进行一些过滤 > 然后保存
有办法做到这一点吗? 有办法用 Python 做到这一点吗?
谢谢您的回答。
答案1
在命令行上输入gimp --help
或man gimp
并查看选项列表(在线版本:https://www.gimp.org/man/gimp.html)
gimp 网站还专门有一个页面批处理模式。
通常批处理模式是对一个或多个文件执行操作。
所以这:
打开 gimp > 读取给定文件夹 > 逐个打开其中的所有图像 > 并对其进行一些过滤 > 然后保存
变成:
- 使用
gimp -b
并在其后面添加过滤器的文件和操作。
无需打开 gimp,也不需要告诉它文件夹名称(您可以cd
在命令之前输入它)并且它会自动保存。
这个会很有趣,但是它是用它的母语写的,所以不是 python:
处理多个文件
您可能希望将效果应用于多个文件,通常是同一目录中的一组文件。GIMP 2.2 为此添加了一个非常有用的功能,即 file-glob 插件。这使 GIMP 变成了一个多功能的批处理器。为了使用它,我们需要对脚本进行一些修改:
(define (batch-unsharp-mask pattern
radius
amount
threshold)
(let* ((filelist (cadr (file-glob pattern 1))))
(while (not (null? filelist))
(let* ((filename (car filelist))
(image (car (gimp-file-load RUN-NONINTERACTIVE
filename filename)))
(drawable (car (gimp-image-get-active-layer image))))
(plug-in-unsharp-mask RUN-NONINTERACTIVE
image drawable radius amount threshold)
(gimp-file-save RUN-NONINTERACTIVE
image drawable filename filename)
(gimp-image-delete image))
(set! filelist (cdr filelist)))))
此版本的脚本采用 glob 模式而不是文件名,并将“锐化蒙版”滤镜应用于与此模式匹配的所有文件。为了锐化当前目录中的所有 PNG 图像,您需要运行以下命令:
gimp -i -b '(batch-unsharp-mask "*.png" 5.0 0.5 0)' -b '(gimp-quit 0)'
如果您想要 python,请使用模块。使用“gimp-text-layer-new”的随机示例
import gi
from gi.repository import Gimp
result = Gimp.get_pdb().run_procedure(
'gimp-text-layer-new',
[image, text, font_name, font_size, 3]
)
layer = result.index(1)