GIMP Script.Fu 批量将 JPEG 转换为 PNG 的脚本
GIMP Script.Fu script to batch convert JPEG to PNG
谁能给我脚本,我需要在 GIMP 中 运行 将许多 *.jpeg 文件批量转换为 *.png Script.Fu?
目前我在手动导出每张图片上花费了太多时间,这很浪费时间。
我现在无法安装任何东西,所以无法使用其他应用程序。
真正的解决办法是使用ImageMagicks转换,就这么简单magick convert some.jpeg some.png
。某处必须有一个 "portable" 版本,您可以使用 USB 密钥。
否则,使用 Gimp 是一种不需要新脚本的手动方式,因为它使用现有脚本:
- get/install ofn-export-layers
File>Open
第一个JPEG
File>Open as layers
更多 Jpeg。您可以在一次调用中 select several/all jpeg(实际数量主要受可用 RAM 限制)。完成此操作后,您将在同一图像中堆叠许多 Jpeg
File>Export all layers
,确保您使用的名称模式以 .png
结尾(脚本附带的文档解释了它是如何工作的)。
好吧,经过多次试验和错误,我终于想出了如何仅使用 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 测试
谁能给我脚本,我需要在 GIMP 中 运行 将许多 *.jpeg 文件批量转换为 *.png Script.Fu?
目前我在手动导出每张图片上花费了太多时间,这很浪费时间。
我现在无法安装任何东西,所以无法使用其他应用程序。
真正的解决办法是使用ImageMagicks转换,就这么简单magick convert some.jpeg some.png
。某处必须有一个 "portable" 版本,您可以使用 USB 密钥。
否则,使用 Gimp 是一种不需要新脚本的手动方式,因为它使用现有脚本:
- get/install ofn-export-layers
File>Open
第一个JPEGFile>Open as layers
更多 Jpeg。您可以在一次调用中 select several/all jpeg(实际数量主要受可用 RAM 限制)。完成此操作后,您将在同一图像中堆叠许多 JpegFile>Export all layers
,确保您使用的名称模式以.png
结尾(脚本附带的文档解释了它是如何工作的)。
好吧,经过多次试验和错误,我终于想出了如何仅使用 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 测试