我想使用 ImageMagick 将所有PNG转换为PNG (我需要这个,因为AndroidStudio在原始PNG上存在一些问题.ImageMagick能够解决此问题重新导出PNG。)
如果我这样做:convert a.png a.png
它有效。
但是我如何为许多文件(包括子目录中的文件)执行此操作?
答案 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"