使用ImageMagick转换多个图像

时间:2015-05-26 15:13:26

标签: imagemagick

我想使用 ImageMagick 所有PNG转换为PNG (我需要这个,因为AndroidStudio在原始PNG上存在一些问题.ImageMagick能够解决此问题重新导出PNG。)

如果我这样做:convert a.png a.png它有效。

但是我如何为许多文件(包括子目录中的文件)执行此操作?

2 个答案:

答案 0 :(得分:1)

尝试此命令。从要转换所有图像的最顶层目录开始:

find . -name "*.png"     \
| while read image; do   \
     convert "${image}" "${image/.png/---repaired.png}
  done

警告: 如果您的PNG文件的后缀为.PNG.pNg或类似,则该命令不适用于这些文件。对于这种情况,命令需要一些修改......

答案 1 :(得分:1)

对于Windows用户 - 您可以在cmd.exe窗口中尝试此操作:

for %i in (*.png *\*.png *\*\*.png *\*\*\*.png) do (
   convert.exe %i %~pni---repaired.png
)

这将循环显示当前目录的PNG以及3级深度子目录中的PNG。

您必须确保convert.exe确实是来自ImageMagick的那个 - 相应地设置您的环境变量%PATH%。否则,当命令要使用名称相同的磁盘格式转换convert.exe命令时,您可能会遇到错误。

如果不确定,请使用IM convert.exe的完整路径,例如:

D:\programs\imagemagick-install-dir\convert.exe %i %~pni---repaired.png

另外,请记住:如果您将上述命令放入*.bat文件中,则必须将每次出现的%加倍。因此,直接命令中的%i变为批处理文件中的%%i

如果您使用的是Vista / Windows7 / 2008/8(或安装了 Resource Kit 的Windows XP),您可以使用ForFiles.exe,这可以是用于循环文件:

forfiles.exe   ^
  /p <path>    ^
  /m *.png     ^
  /s           ^
  /C "convert.exe @file @fname---repaired.png"