【问题标题】:GIMP Script.Fu script to batch convert JPEG to PNGGIMP Script.Fu 脚本将 JPEG 批量转换为 PNG
【发布时间】:2018-07-17 11:27:54
【问题描述】:

谁能给我我需要运行的脚本,以便将许多 *.jpeg 文件批量转换为 GIMP 中的 Script.Fu 中的 *.png?

目前我花费太多时间手动导出每张图片,这是浪费时间。

我现在无法安装任何东西,所以无法使用替代应用程序。

【问题讨论】:

标签: batch-processing gimp script-fu


【解决方案1】:

真正的解决方案是使用ImageMagicks 转换,就像magick convert some.jpeg some.png 一样简单。必须有一个“便携式”版本可以在 USB 密钥上使用。

否则使用 Gimp,这是一种不需要新脚本的手动方式,因为它使用现有脚本:

  • 获取/安装ofn-export-layers
  • File>Open第一个JPEG
  • File>Open as layers 更多 Jpeg。您可以在一次调用中选择多个/所有 jpeg(实际数量主要受可用 RAM 限制)。完成此操作后,您将在同一张图像中堆叠许多 Jpeg
  • File>Export all layers,确保您使用的名称模式以 .png 结尾(脚本随附的文档解释了它是如何工作的)。

【讨论】:

  • 谢谢。不幸的是,这对我没有帮助,因为我需要能够使用原始文件名保存所有文件。这些名称必须是完美的,我当然不想输入它们。我将研究 ImageMagicks 的便携式版本,但由于我的使用受到监控,我真的不想造成麻烦,所以 GIMP 会更可取跨度>
  • File>Open as layers 图层以其源图像命名。在ofn-export-layers 中,您将保存模式设置为{name}.png 以使用其层/源名称保存层,其中jpgpng 替换。换句话说:文件covfefe.jpg 被加载为名为@9​​87654333@ 的层,ofn-export-layers 将在您选择的目录中另存为covfefe.png。 (*) 使用今天更新的版本 (v0.1),{name} 参数在以前的版本中的作用有点不同。是的,它将图像保存为其初始大小,它们不会被裁剪为画布大小。
  • 谢谢。所以我有一批要再次做,但脚本没有出现在菜单文件中,因为它应该。有关如何解决此问题的任何见解?
  • 虽然它看起来像一个脚本,但对于 Gimp 来说,它在技术上是一个插件,因此应该放在 plug-ins 目录中,而不是在 scripts 目录中。重新启动 Gimp 以将其考虑在内。
  • 不幸的是,我每次需要插件时都必须添加插件等,否则它可以工作!非常感谢。目录选择很笨拙,并且不默认为文件来自的同一目录,但仍然比一遍又一遍地导出更好。
【解决方案2】:

好吧,经过多次尝试和错误,我终于想出了如何仅使用 GIMP 将一种文件格式转换为另一种格式。

这是转换成PNG的Script-Fu脚本:

(
    let* ((filename "{{filename}}")
            (output "{{output}}")
            (image (car (gimp-file-load 1 filename filename)))
            (drawable (car (gimp-image-get-active-layer image))))
    (file-png-save-defaults 1 image drawable output output)
)

其中{{filename}} 是需要转换的输入文件(例如jpeg 文件),{{output}} 是您需要的输出文件(可以只是相同的文件名,但带有PNG 扩展名)

如何运行它:可能还可以改进

gimp -i -n -f -d --batch "{{one-line script-fu}}"

您可以在GIMP online documentation 中找到有关命令行选项的更多信息。

需要改的地方是{{one-line script-fu}},而且必须是……单行!您可以可能使用 cmd 在一个文件中完成所有这些操作(如果您使用 Windows),但对我来说使用 Python 更容易,所以这里是它的脚本:

import subprocess, os

def convert_to_png(file_dds):
    #Loads the command to run gimp cli (second code block)
    #Note: remove "{{one-line script-fu}}" and leave one space after the --batch
    with open("gimp-convert.bat", "r") as f:
        main_script = f.read()

    #Prepares the Script-Fu script to be run, replacing necessary file names and makes it one-line (the firs code block)
    with open("gimp-convert-png.fu", "r") as f:
        script = f.read().replace("\n", " ").replace("{{filename}}", file_dds) \
            .replace("{{output}}", file_dds[:-3]+"PNG").replace("\\", "\\\\").replace("\"", "\\\"")

    subprocess.run(main_script + " \"" + script + "\" --batch \"(gimp-quit 1)\"",
        cwd = os.getcwd(),
        shell = True)

你应该把你的文件转换成PNG!

我的纹理高档项目需要这个,下面的所有代码都可以找到here

使用 GIMP 2.10 测试

【讨论】:

    猜你喜欢
    • 2019-10-27
    • 2011-01-18
    • 2018-05-04
    • 1970-01-01
    • 2018-03-16
    • 2011-09-09
    • 2012-12-22
    • 2022-08-22
    • 1970-01-01
    相关资源
    最近更新 更多