使用 ImageMagick 转换多个图像

Convert multiple images with ImageMagick

我想使用 ImageMagick 将我所有的 PNG 转换为 PNG(我需要这个,因为 AndroidStudio 对原始 PNG 有一些问题。 ImageMagick 能够通过重新导出 PNG 来解决这个问题。)

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

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

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

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

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

对于 Windows 用户 -- 您可以在 cmd.exe window:

中尝试
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"