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