作为构建过程的一部分,我需要将许多XCF(GIMP的本机格式)图像转换为PNG格式.我确信这应该可以使用GIMP的批处理模式,但我忘记了我曾经知道的所有脚本.
我的输入图像有多个图层,所以我需要等效于"合并可见图层"的批处理模式,然后是"另存为PNG".另请注意,我无法安装任何内容~/.gimp*/scripts/- 我需要一个自包含的命令行,或者在源代码树中安装脚本的方法.
请注意,虽然这与此问题类似,但我还有其他约束,我需要使用GIMP完成此操作.我尝试了当前版本的ImageMagick,它会破坏我的测试图像.
如果我有一个XCF文件(或Gimp支持的任何其他文件),我如何将其转换为例如PNG以进行显示或进一步处理?
从gimp.org下载使用Gimp 2.6.6 for MAC OS X(在X11下).
我正在尝试使用Script-Fu自动化无聊的手动过程.我需要解析图像文件名以使用原始文件名上的后缀将各种图层保存为新文件.
我最初的尝试是这样的,但失败了,因为(string-search ...)似乎在2.6下没有(脚本引擎的更改?).
(set! basefilename (substring filename 0 (string-search "." filename)))
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用此信息使用正则表达式解析基本文件名,但(re-match-nth ...)也无法识别.
(if (re-match "^(.*)[.]([^.]+)$" filename buffer)
(set! basefilename (re-match-nth orig-name buffer 1))
)
Run Code Online (Sandbox Code Playgroud)
虽然从向量中拉出值没有错误,但在传入时,结果值不会被视为字符串(string-append ...).
(if (re-match "^(.*)[.]([^.]+)$" filename buffer)
(set! basefilename (vector-ref buffer 1))
)
Run Code Online (Sandbox Code Playgroud)
所以我想我的问题是,我将如何解析基本文件名?
所以我尝试运行本教程中的批处理代码:http://www.gimp.org/tutorials/Basic_Batch/
我将其复制并保存到.gimp-2.8脚本文件夹中
(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)))))
Run Code Online (Sandbox Code Playgroud)
然后运行命令:
gimp-2.8 -i -b '(batch-unsharp-mask "*.png" 5.0 0.5 0)' -b '(gimp-quit 0)'
Run Code Online (Sandbox Code Playgroud)
但我得到了错误
Error: ( : 1) eval: unbound variable: *.png
Run Code Online (Sandbox Code Playgroud)
这似乎不是脚本的问题; 可能是我称呼它的方式或我错过了一些东西,但我无法弄明白.
如何使用GIMP中的Script-FU从所有文件夹中获取文件列表(*.jpg)?
(let* ((filelist (cadr (file-glob pattern 1)))
Run Code Online (Sandbox Code Playgroud)
这只从当前文件夹中获取文件.
我想调整目录中每个 jpg 的大小。
这是我找到的 gimp 脚本。对我来说看起来很明智。
(define (batch-resize pattern)
(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-active-drawable image)))
(cur-width (car (gimp-image-width image)))
(cur-height (car (gimp-image-height image)))
(width (* 0.25 cur-width))
(height (* 0.25 cur-height))
)
(gimp-message filename)
(gimp-image-scale-full image width height INTERPOLATION-CUBIC)
(let
((nfilename (string-append "thumb_" filename)))
(gimp-file-save RUN-NONINTERACTIVE image drawable nfilename nfilename)
)
(gimp-image-delete image)
)
(set! filelist (cdr filelist))
)
)
) …Run Code Online (Sandbox Code Playgroud) 我有一个Gimp插件重命名文件,我需要一个替换功能.不幸的是,Gimp使用的TinyScheme没有字符串的替换函数.我搜索了很多,但找不到一个真正的字符串替换.回答如下......
我正在尝试在 GIMP 中编写一个脚本,该脚本将加载一个 PNG 文件并以最大压缩率再次保存它(我还计划添加其他处理步骤)。但是,以下脚本似乎破坏了 alpha 信息:
(define (process-png pattern)
(let* (
(filelist (cadr (file-glob pattern 1)))
)
(while (not (null? filelist))
(begin
(catch ()
(let* (
(filename (car filelist))
(image (car (file-png-load RUN-NONINTERACTIVE filename filename)))
)
(begin
(file-png-save2 RUN-NONINTERACTIVE
image (car (gimp-image-get-active-drawable image))
filename filename
0 9 0 0 0 0 0 0 0)
(gimp-image-delete image)
)
)
)
(set! filelist (cdr filelist))
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
例如,JQuery 图标中的半透明像素似乎都变得完全透明,使所有内容都出现了别名。
如何解决这个问题?
我尝试使用 script-fu、scheme 为 gimp 制作一些脚本。
自然,作为初学者,有很多错误和误解。
现在我正在寻找一种方法来调试这些脚本。
我找到了 (gimp-message),但结果没有显示出来。我不知道是否有可能将调试消息打印到我可以检查的任何地方。
生成填充文本的新图像可能会起作用;-) 但看起来有点矫枉过正。
有哪些调试 gimp 脚本的方法?
这是我的第一个gimp脚本 - 当我尝试在那里执行时,它给了我"非法功能".
(define
(
script-fu-c64ize
filename
width
height
)
(let*
(
(image 0)
)
(image (gimp-file-load 1 filename filename))
(gimp-image-scale-full image width height 2)
(gimp-image-scale-full image (/ width 2) height 0)
(gimp-image-convert-indexed image 1 4 16 FALSE FALSE "C64")
(gimp-image-scale-full image (* 4 width) (* 4 height) 0)
(drawable (car (gimp-image-get-active-layer image)))
(gimp-file-save 1 image drawable filename filename)
(gimp-image-delete image)
)
)
Run Code Online (Sandbox Code Playgroud)
也许更有经验的人可以发现错误,我觉得我错过了一些基本的东西(或者这只是一个愚蠢的错误).我还在努力学习文档.
谢谢!