Gimp Scheme 脚本。从 Gimp 导出图像时如何保持相同的文件名

Gimp Scheme Script. How can I keep the same file name when exporting the images from Gimp

提问人:Liam Brun 提问时间:11/17/2023 最后编辑:ShawnLiam Brun 更新时间:11/18/2023 访问量:51

问:

我想在脚本导出每个文件时保持相同的文件名。尝试了很多方法,但没有任何效果。导出时,结束文件名为 image00001。我希望它与Gimp中的相同,我试图修改Scheme代码以在导出过程中保留原始文件名。我探索了不同的方法,包括使用original_filename。但是,该变量似乎无法正常工作,从而导致错误。

由于 GIMP Scheme 环境的限制和不确定性,以及在保留原始文件名的同时保存文件的特定挑战,因此很难找到令人满意的解决方案。由于 GIMP Scheme API 中缺少某些功能或信息,因此这些调整具有挑战性。

(define (script-fu-save-all-images inDir inSaveType inFileName inFileNumber)
  (let* (
          (i (car (gimp-image-list)))
          (image)
          (newFileName "")
          (saveString "")
          (pathchar (if (equal? (substring gimp-dir 0 1) "/") "/" "\\"))
        )
    (set! saveString
          (cond
           ((equal? inSaveType 0) ".jpg")
           ((equal? inSaveType 1) ".bmp")
           ((equal? inSaveType 2) ".png")
           ((equal? inSaveType 3) ".tif")
           )
          )
    (while (> i 0)
      (set! image (vector-ref (cadr (gimp-image-list)) (- i 1)))
      (set! newFileName (string-append inDir
                                        pathchar inFileName
                                        (substring "00000" (string-length
                                                           (number->string (+ inFileNumber i))))
                                        (number->string (+ inFileNumber i)) saveString))
      ;; Überprüfe, ob das Bild mehr als eine Ebene hat
      (if (> (car (gimp-image-get-layers image)) 1)
          ;; Füge alle Ebenen zusammen, bevor du speicherst
          (gimp-item-set-visible (car (gimp-image-merge-visible-layers image CLIP-TO-IMAGE))
                                 TRUE)
          )
      ;; Speichern
      (gimp-file-save RUN-NONINTERACTIVE
                      image
                      (car (gimp-image-get-active-layer image))
                      newFileName
                      newFileName
                      )
      (gimp-image-clean-all image)
      (set! i (- i 1))
      )
    )
  )

(script-fu-register "script-fu-save-all-images"
                    "<Image>/File/Save ALL As"
                    "Save all opened images as ..."
                    "Lauchlin Wilkinson (& Saul Goode)"
                    "Lauchlin Wilkinson (& Saul Goode)"
                    "2014/04/21"
                    ""
                    SF-DIRNAME "Save Directory" ""
                    SF-OPTION "Save File Type" (list "jpg" "bmp" "png" "tif")
                    SF-STRING "Save File Base Name" "IMAGE"
                    SF-ADJUSTMENT "Save File Start Number"
                    (list 0 0 9000 1 100 0 SF-SPINNER)
                    )
脚本 方案 gimp script-fu

评论

0赞 Martin Půda 11/17/2023
您的代码是此代码的副本 - 您尝试了哪些方法和功能?“似乎变量无法正常工作,导致错误”中出现了什么样的错误?
1赞 xenoid 11/17/2023
我不明白你的代码在哪里调用.恕我直言,代码应该使用 ,而不是展平图像,保存它,然后删除它,这样您的图像就会保持相同的状态(脚本不存在 Gimp......(gimp-image-get-filename image)(gimp-layer-new-from-visible image dest-image name)
0赞 jsbueno 11/20/2023
正如 Xenoid 所说,这个脚本主体的很大一部分是生成新的文件名,而不是他列出的调用。此外,Python 脚本可能会在 5 行正文中执行此操作(加上注册脚本的调用,其长度大致相同)

答: 暂无答案