Imagemagick 从XCF版本11批量转换

Imagemagick 从XCF版本11批量转换,imagemagick,script-fu,irfanview,xcf,Imagemagick,Script Fu,Irfanview,Xcf,我有一个以.xcf格式保存的图像文件夹,我想将它们批量转换为更方便的格式。我尝试了一些不起作用的方法: 我曾经使用IrfanView来实现这一点,但它不再有效,因为它拒绝打开最新版本的.xcf文件 我尝试使用IMageMagick mogrify和convert,但它们都给我“内存分配失败”——也许它们也不理解新格式 我尝试了xcf2png命令行工具,在创建空图像之前,它会给我消息“警告:XCF版本11不受支持(无论如何尝试…) 我最后的希望是编写一个批处理转换脚本,该脚本将在Gimp的最新

我有一个以.xcf格式保存的图像文件夹,我想将它们批量转换为更方便的格式。我尝试了一些不起作用的方法:

  • 我曾经使用IrfanView来实现这一点,但它不再有效,因为它拒绝打开最新版本的.xcf文件

  • 我尝试使用IMageMagick mogrify和convert,但它们都给我“内存分配失败”——也许它们也不理解新格式

  • 我尝试了xcf2png命令行工具,在创建空图像之前,它会给我消息“警告:XCF版本11不受支持(无论如何尝试…)

我最后的希望是编写一个批处理转换脚本,该脚本将在Gimp的最新版本中工作,但我没有任何ScriptFu方面的经验。我发现了一个脚本,它可以转换其他一些文件类型(),但我不太了解如何修改它。有人知道读取xcf和写入png的正确调用/参数吗?

Gimp脚本,在作为参数传递的目录中为每个.xcf生成一个.png
  • 另存为
    convertXCF.py
    (这是Python,请注意缩进)
  • 运行方式:
  • BAT语法,用于Bash(Linux,OSX)交换简单引号和双引号
  • 编写时,脚本必须位于当前目录中,这可以更改

更多说明。

这里是一个自包含的bash脚本,它应该将当前目录中的所有xcf文件转换为png格式的副本。它应该可以在任何安装了Gimp的Linux计算机上工作。它不需要在脚本目录中进行任何安装:

#!/bin/bash
# xcfs2png.sh
# Invoke The GIMP with Script-Fu convert-xcf-png
# No error checking.
{
cat <<EOF
(define (convert-xcf-png filename outpath)
    (let* (
            (image (car (gimp-xcf-load RUN-NONINTERACTIVE filename filename )))
            (drawable (car (gimp-image-merge-visible-layers image CLIP-TO-IMAGE)))
            )
        (begin (display "Exporting ")(display filename)(display " -> ")(display outpath)(newline))
        (file-png-save2 RUN-NONINTERACTIVE image drawable outpath outpath 0 9 0 0 0 0 0 0 0)
        (gimp-image-delete image)
    )
)

(gimp-message-set-handler 1) ; Messages to standard output
EOF

for i in *.xcf; do
  echo "(convert-xcf-png \"$i\" \"${i%%.xcf}.png\")"
done

echo "(gimp-quit 0)"

} | gimp -i -b -
#/bin/bash
#xcfs2png.sh
#使用脚本Fu convert xcf png调用GIMP
#无错误检查。
{

cat ImageMagick还不支持Gimp 2.10导出的高比特深度XCF图像(如果您正尝试转换该格式)。它支持Gimp 2.8格式XCF
gimp -idf --batch-interpreter python-fu-eval -b "import sys;sys.path=['.']+sys.path;import convertXCF;convertXCF.run('/path/to/the/directory')" -b "pdb.gimp_quit(1)"
#!/bin/bash
# xcfs2png.sh
# Invoke The GIMP with Script-Fu convert-xcf-png
# No error checking.
{
cat <<EOF
(define (convert-xcf-png filename outpath)
    (let* (
            (image (car (gimp-xcf-load RUN-NONINTERACTIVE filename filename )))
            (drawable (car (gimp-image-merge-visible-layers image CLIP-TO-IMAGE)))
            )
        (begin (display "Exporting ")(display filename)(display " -> ")(display outpath)(newline))
        (file-png-save2 RUN-NONINTERACTIVE image drawable outpath outpath 0 9 0 0 0 0 0 0 0)
        (gimp-image-delete image)
    )
)

(gimp-message-set-handler 1) ; Messages to standard output
EOF

for i in *.xcf; do
  echo "(convert-xcf-png \"$i\" \"${i%%.xcf}.png\")"
done

echo "(gimp-quit 0)"

} | gimp -i -b -