2013-03-09 95 views
15

我有一个文件夹包含许多不同类型的图像(png,jpg,jpeg,bmp,pdf),我想将它们全部转换进入png(例如)使用imagemagick。如何将给定文件夹中的所有文件(不同格式)转换为不同的文件类型

是否有可以执行此单个命令?如果不是,我该怎么做呢?

谢谢。

+0

,或者如果你使用Python看看这个:http://stackoverflow.com/questions/2900035/changing-file-extension-in-python – 2015-03-16 11:22:16

回答

22

尝试mogrify命令:

mogrify -format png *.* 

但要小心。如果没有-format选项,mogrify覆盖原始图像。请务必阅读documentation

+0

谢谢。我得到以下错误消息: 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” @错误/缺点 titute.c/ReadImage/550。 (这是很容易解决的吗?) – 2013-03-10 22:21:36

+3

这是因为'mogrify'试图转换文件'desktop.ini'这不是一个图像文件。你应该只将图像文件传递给'mogrify'。要么删除'desktop.ini',要么将'*。*'更改为只匹配目录中图像文件的通配符。您也可以对每种文件格式多次运行命令:'mogrify -format png * .jpg','mogrify -format png * .bmp'等。 – nwellnhof 2013-03-10 22:33:22

+0

非常棒 - 非常感谢nwellnhof! – 2013-03-10 22:46:08

14

虽然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 
1

您可以从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 

类似:How can I scale all images in a folder to the same width?