如何将给定文件夹中的所有文件(格式不同)转换为不同的文件类型

Tal*_*ili 30 imagemagick imagemagick-convert

我有一个包含许多不同类型图像的文件夹(png,jpg,jpeg,bmp,pdf),我想使用imagemagick将它们全部转换为png(例如).

是否有一个命令可以执行此操作?如果没有,我该怎么办呢?

谢谢.

nwe*_*hof 42

尝试mogrify命令:

mogrify -format png *.*
Run Code Online (Sandbox Code Playgroud)

不过要小心.如果没有该-format选项,则mogrify覆盖原始图像.请务必阅读文档.

  • 那是因为`mogrify`试图转换不是图像文件的`desktop.ini`文件.你应该只将图像文件传递给`mogrify`.删除`desktop.ini`或将`*.*`更改为只匹配目录中图像文件的通配符.您还可以为每种文件格式多次运行命令:`mogrify -format png*.jpg`,`mogrify -format png*.bmp`等. (4认同)

Mar*_*oma 26

虽然mogrify似乎可以完成这项工作,但我想向您展示如何使用convertImageMagick的多个命令来完成这项工作.

我认为多个命令更好,因为文件类型的数量据说非常小,您可以根据需要更好地调整它们:

这个命令:

for file in *.xbm; do convert $file "`basename $file .xbm`.png"; done
Run Code Online (Sandbox Code Playgroud)

将所有.xbm文件转换为.png不触及xbm文件.

然后你可以移动所有"转换"的文件:

mkdir converted
for file in *.xbm; do mv $file converted/; done
Run Code Online (Sandbox Code Playgroud)

  • 如果文件名包含空格,当前命令不起作用。解决此问题的一种方法是“for file in *.xbm;” 转换 "$file" "\`basename \"$file\" .xbm\`.png"; 完成`但我有一种感觉 bash 为此提供了一个更干净的解决方案。 (2认同)

ken*_*orb 5

您可以使用convertImageMagick 包中的命令,例如

find . -maxdepth 1 \( -iname \*.png -o -iname \*.jpg -o -iname \*.jpeg -o -iname \*.bmp -o -iname \*.pdf \) -exec convert -verbose "{}" "DEST_DIR/{}.png" \;

或者,如果您将所有文件都放在同一目录中,请尝试以下更简单的方法:

convert '*.*' converted_%04d.png
Run Code Online (Sandbox Code Playgroud)

类似:如何将文件夹中的所有图像缩放到相同的宽度?