如何用Script-Fu将图片导出至GIMP文件所在文件夹?
解决GIMP脚本导出PNG到图像所在文件夹的问题
问题分析
原脚本中file-png-save使用硬编码文件名,未指定路径,因此默认保存到用户文件夹。要实现保存到当前图像所在目录,需先获取图像的文件路径,再拼接导出文件名。另外原脚本里的gimp-layer-sca080le是拼写错误,正确应为gimp-layer-scale,否则缩放功能无法正常执行。
修正后的脚本
(define (script-fu-biz-scale Image Layer Drawable) ; 修正缩放函数拼写错误 (gimp-layer-scale Layer 1920 1 TRUE) ; 获取图像路径并拼接保存路径 (let* ((image-path (gimp-image-get-filename Image)) ; 提取图像所在目录,未保存则用空字符串(保持原默认行为) (save-dir (if image-path (string-trim-right image-path (substring image-path (string-rindex image-path "/") (string-length image-path))) "")) ; 拼接导出文件的完整路径 (save-path (string-append save-dir "BizScale.png"))) ; 使用完整路径保存PNG (file-png-save 1 Image Drawable save-path save-path 0 0 0 0 0 0 0) ) ) (script-fu-register "script-fu-biz-scale" "<Image>/Filters/BizScale" "Scaling images automatically" "Lukas" "Lukas" "12.12.2022" "RGB*" SF-IMAGE "Image" 0 SF-DRAWABLE "Layer" 0 SF-DRAWABLE "Drawable" 0 )
关键说明
gimp-image-get-filename:获取当前图像的完整文件路径,若图像从未保存过则返回#f,此时脚本会沿用原逻辑保存到用户文件夹。string-rindex:定位路径中最后一个/的位置,用于截取目录部分。string-trim-right:移除路径中的文件名,仅保留目录路径。string-append:将目录路径与导出文件名拼接成完整的保存路径。
内容的提问来源于stack exchange,提问作者Lukas2002
相关产品推荐
相关产品推荐

