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

44

我有一个文件夹里面有许多来自不同类型的图像(png、jpg、jpeg、bmp、pdf),我想使用ImageMagick将它们全部转换为png格式。

是否有一条命令可以完成这个任务?如果没有,我该怎么做呢?

谢谢。


或者如果您使用Python,请参考此链接:https://dev59.com/m3E85IYBdhLWcg3wMAfc - Martijn van Wezel
1
@MartijnvanWezel,你链接的帖子并没有什么帮助。它只是详细说明了如何重命名文件,而不是如何完全重新格式化它。 - speedstyle
1
@speedstyle 哦,太糟糕了,早些年我不是很懂这个...我会让我的命令保持原样,这样其他人就可以从错误中学习。 - Martijn van Wezel
3个回答

80

尝试使用mogrify命令:

mogrify -format png *.*

但是要小心。如果没有使用-format选项,mogrify会覆盖原始图像。请务必阅读文档


谢谢。我收到了以下错误信息: C:\Users\Tal\s>mogrify -format png . mogrify.exe:无法打开模块文件C:\Program Files (x86)\ImageMagick-6.8. 3-Q16\modules\coders\IM_MOD_RL_INI_.dll':没有这样的文件或目录@ warning / mo dule.c / GetMagickModulePath / 683。 mogrify.exe:此图像格式没有解码委托desktop.ini' @ error / cons titute.c / ReadImage / 550。(这个问题简单易解决吗?) - Tal Galili
5
这是因为 mogrify 尝试转换名为 desktop.ini 的文件,而它不是图片文件。你应该只传递图片文件给 mogrify。要么删除 desktop.ini 文件,要么将 *.* 改为只匹配目录中图片文件的通配符。你也可以针对每种文件格式运行命令多次:mogrify -format png *.jpgmogrify -format png *.bmp,等等。 - nwellnhof
我想将不同的图像文件类型合并成一个 *.pdf 文件。如何修改您的代码以实现这一目标? - nutty about natty
我猜我可以回到其他工具,比如 pdftk(例如使用 pdftk *.pdf cat output combined.pdf),但我更愿意有一个一行代码完成整个工作的方法... - nutty about natty
1
如果使用mogrify命令时带有-format选项,文件不会被替换,而是会保存一个新的文件并附上新的前缀。 - miro marchi
如果mogrify命令使用-format选项并且指定跟原始文件格式相同的格式,它仍然会覆盖原始文件。不确定是否有任何方法可以避免这种情况。 - AnnanFay

40

虽然 mogrify 看起来能够完成工作,但我想向您展示如何使用 ImageMagick 的 convert 命令进行多个操作。

我认为多个命令更好,因为文件类型数量应该很少,而且您可以更好地根据自己的需求进行调整:

这个命令:

for file in *.xbm; do convert $file "`basename $file .xbm`.png"; done

将所有的.xbm文件转换为.png,同时不会影响xbm文件。

然后你可以移动所有的“已转换”文件:

mkdir converted
for file in *.xbm; do mv $file converted/; done

2
当前命令如果文件名包含空格则无法正常工作。解决方法之一是 for file in *.xbm; do convert "$file" "\basename "$file" .xbm`.png"; done`,但我感觉Bash提供了更简洁的解决方案。 - jan-glx
第二步只需执行 mv *.xbm converted - lenooh

6
您可以使用ImageMagick软件包中的convert命令,例如:
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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接